我有一个包含一些数字(分数)和重复 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
最佳答案
我推荐 Chris 提到的 data.table
(有利于提高速度,但学习曲线更陡峭)。
或者,如果您不想要 data.table
,您可以使用 plyr
:
library(plyr)
ddply(df, .(ID), subset, score==max(score))
# same as ddply(df, .(ID), function (x) subset(x, score==max(score)))
关于r - R中两个相等的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31308313/