我有这种数据集(ID、V1、V2 是我的数据框的 3 个变量):
ID V1 V2
1 A 10
1 B 5
1 D 1
2 C 9
2 E 8
我想要一个新的数据框,对于每个 ID,V2 中值为 max 的行。例如,结果将是:
ID V1 V2
1 A 10
2 C 9
我有这种数据集(ID、V1、V2 是我的数据框的 3 个变量):
ID V1 V2
1 A 10
1 B 5
1 D 1
2 C 9
2 E 8
我想要一个新的数据框,对于每个 ID,V2 中值为 max 的行。例如,结果将是:
ID V1 V2
1 A 10
2 C 9
ddply
从 plyr 包中使用(假设数据是样本)
library(plyr)
ddply(sample,.(ID),summarize,V1=V1[which.max(V2)],V2=max(V2))
ID V1 V2
1 1 A 10
2 2 C 9
这是一种笨拙的代码,但它有效....
> mydf[with(mydf, ave(V2, ID, FUN = function(x) x == max(x))) == 1, ]
ID V1 V2
1 1 A 10
4 2 C 9
不那么笨拙:
do.call(rbind,
by(mydf, mydf$ID,
FUN = function(x) x[which.max(x$V2), ]))
# ID V1 V2
# 1 1 A 10
# 2 2 C 9