我有一个带有一些数字(分数)和重复ID的数据框。我想获得每个ID的最大值。我用了这个功能
top = aggregate(df$score, list(df$ID),max)
这为我返回了一个顶部数据帧,其最大值对应于每个ID。
但是碰巧对于一个ID,我们有两个EQUAL最大值。但是此函数忽略了第二个值。
有什么办法可以同时保留两个最大值吗?
例如:
df
ID score
1 12
1 15
1 1
1 15
2 23
2 12
2 13
上面的函数给了我这个:顶部
ID Score
1 15
2 23
我需要这个:顶部
ID Score
1 15
1 15
2 23
我推荐data.table
克里斯(Chris)提到的(速度不错,但学习曲线更陡峭)。或者,如果您不希望data.table
使用,可以使用plyr
:
library(plyr)
ddply(df, .(ID), subset, score==max(score))
# same as ddply(df, .(ID), function (x) subset(x, score==max(score)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句