【发布时间】:2018-05-30 19:30:05
【问题描述】:
我想创建一个数据子集并根据它们的最大值收集数据: 代码如下:
mat=matrix(c(0,0,0,1,2,3,4,5,0,0,0,0), ncol=1)
mat=as.data.frame(mat)
colnames(mat) <- sub("V1", "value", colnames(mat))
gr=matrix(c(1,2,2,2,2,3,4,4,4,5,5,5), ncol=1)
gr=as.data.frame(gr)
colnames(gr) <- sub("V1", "group", colnames(gr))
df=as.data.frame(cbind(mat, gr))
data = subset(df, value == max(value))
所以我创建了一个数据框df,如下所示:
value group
1 0 1
2 0 2
3 0 2
4 1 2
5 2 2
6 3 3
7 4 4
8 5 4
9 0 4
10 0 5
11 0 5
12 0 5
所以我想根据最大值收集一个子数据帧中的数据,例如
- 对于第 1 组,最大值为 0。
- 对于第 2 组,最大值为 2
- 对于第 3 组,最大值为 3 等等。
那么结果应该是:
value group
1 0 1
5 2 2
6 3 3
8 5 4
12 0 5
我得到的是subset(df, value == max(value)):
value group
8 5 4
关于我可以使用什么函数来解决它的任何建议?
【问题讨论】:
-
查看R-FAQ for finding mean by group,但只需使用
max而不是mean。 Base R、dplyr、data.table 等中有很多方法。最好的基本 R 版本可能是aggregate(value ~ group, df, max)
标签: r