r - R中两个相等的最大值

标签 r dataframe

我有一个包含一些数字(分数)和重复 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/

相关文章:

python - 将一个 Pandas DataFrame 的元素放置到另一个 DataFrame 中元素的位置

用最接近的值和因子替换 NA 值

r - 具有分组回归线的叠加 xyplot 面板

r - 使用 dplyr 和 mapply 函数时将 R 中的 ggplot2 输出保存到 pdf 文件

python - 在 Scikit 中进行文本分类时是否需要标准化数据

python - 当另一列值更改时创建带有行号的列python

python - 根据最近的日期时间合并/连接数据框到不同的数据框

r - 两个数据系列叠加在同一个条形图/直方图上

r - 相关矩阵

r - 从两个向量创建新的 ID(双向)