R 对分组的数据进行排序
2018-03-26 20:19
148 查看
朋友要给以月为单位的时间序列数据分组然后按其中一个feature再进行排序。链家的一个面试题也要求对一个地区的数据进行分组然后排序。于是研究了一下怎么弄。
数据使用R内建的数据集 ChickWeight
> data=ChickWeight
> head(data)
weight Time Chick Diet
1 42 0 1 1
2 51 2 1 1
3 59 4 1 1
4 64 6 1 1
5 76 8 1 1
6 93 10 1 1
>summary(data)
weight Time Chick Diet
Min. : 35.0 Min. : 0.00 13 : 12 1:220
1st Qu.: 63.0 1st Qu.: 4.00 9 : 12 2:120
Median :103.0 Median :10.00 20 : 12 3:120
Mean :121.8 Mean :10.72 10 : 12 4:118
3rd Qu.:163.8 3rd Qu.:16.00 17 : 12
Max. :373.0 Max. :21.00 19 : 12
(Other):506
方法一,排序完再分组
#直接使用order命令传入第一分组参数,和第二分组参数。会直接返回以第一参数分组后再以第二参数分组的数据
>sdata=data[order(data$Diet,data$weight),]
#直接使用排序后的数据进行分组,因为weight是第二排序依据,所以分组后的数据也已经完成了分组
>result=split(data,data$Diet)
或者可以使用doBy包的orderBy进行操作,效果一样。本身orderBy方法就warp了order方法
>library("doBy")
>result=orderBy(~Diet+weight, data)
>result2=split(data,data$Diet)
方法二,分组后排序
#直接进行分组,分组后的weight数据列没有经过排序,生成了一个weight为无序状态的含有4个dataframe的list
>sdata=split(data,data$Diet)
#使用lapply对list里的每个元素(依照diet分组过后的数据)进行order操作,生成排序过的元素,注意order后面那个都好不要丢
>result=lapply(sdata,function(x) x[order(x[,1]),])
数据使用R内建的数据集 ChickWeight
> data=ChickWeight
> head(data)
weight Time Chick Diet
1 42 0 1 1
2 51 2 1 1
3 59 4 1 1
4 64 6 1 1
5 76 8 1 1
6 93 10 1 1
>summary(data)
weight Time Chick Diet
Min. : 35.0 Min. : 0.00 13 : 12 1:220
1st Qu.: 63.0 1st Qu.: 4.00 9 : 12 2:120
Median :103.0 Median :10.00 20 : 12 3:120
Mean :121.8 Mean :10.72 10 : 12 4:118
3rd Qu.:163.8 3rd Qu.:16.00 17 : 12
Max. :373.0 Max. :21.00 19 : 12
(Other):506
方法一,排序完再分组
#直接使用order命令传入第一分组参数,和第二分组参数。会直接返回以第一参数分组后再以第二参数分组的数据
>sdata=data[order(data$Diet,data$weight),]
#直接使用排序后的数据进行分组,因为weight是第二排序依据,所以分组后的数据也已经完成了分组
>result=split(data,data$Diet)
或者可以使用doBy包的orderBy进行操作,效果一样。本身orderBy方法就warp了order方法
>library("doBy")
>result=orderBy(~Diet+weight, data)
>result2=split(data,data$Diet)
方法二,分组后排序
#直接进行分组,分组后的weight数据列没有经过排序,生成了一个weight为无序状态的含有4个dataframe的list
>sdata=split(data,data$Diet)
#使用lapply对list里的每个元素(依照diet分组过后的数据)进行order操作,生成排序过的元素,注意order后面那个都好不要丢
>result=lapply(sdata,function(x) x[order(x[,1]),])
相关文章推荐
- SQL SERVER 取出 一张表中的每个分组中 的第一条数据 ,第一条数据是按照某种排序规则进行排序取的第一条
- 父子分组的数据进行排序:一般试用于多维查询
- row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 对数据进行分组,排序,加上序号
- 如何:在 DataGrid 控件中对数据进行分组、排序和筛选
- DataGrid 控件中的数据进行分组、排序和筛选
- SQL数据进行排序、分组、统计10技巧
- 「 Hadoop」mapreduce对温度数据进行自定义排序、分组、分区等
- 对多数据进行分组排序后取每组第一条记录
- SQL数据进行排序、分组、统计10技巧
- ORACLE使用row_number() over(...)对查询数据进行分组并排序
- Oracle 分组后,对组内数据进行排序
- PriorityQueue如何对对象类型的数据进行排序
- asp.net中对DataTable数据进行排序、检索、合并、分页、统计
- 使用Vegan包进行生态学数据排序分析的学习(一)
- 读xml文档中数据并对其进行排序,然后在datagrid中显示出来
- 在SQL2005中利用RANK()函数与ROW_NUMBER()对现有数据进行排序改造
- javascript: 带分组数据的Table表头排序
- 计算机网络复习 主题2 :为什么因特网采用分组交换的方式进行数据交换
- java数组数据进行排序输出
- SQL学习之查询技巧 查询第3的数据 用一条语句分组,排序 并查询某一排名