如何按名称分组,然后只选择R中每组的最大值?

时间:2015-04-20 09:40:37

标签: r

我有一个data.frame具有不同的观察结果,重复的名称各有不同的值。例如:

Name Value Other_attributes
A    20    BLABLA1
B    40    BLABLA2
A    35    BLABLA3
B    10    BLABLA4
C    80    BLABLA5

我想要一个新的data.frame,只包含每组最大值的观察结果。

Name Value Other_attributes
    B    40    BLABLA2
    A    35    BLABLA3
    C    80    BLABLA5

我希望已经足够清楚了,非常感谢你。

2 个答案:

答案 0 :(得分:4)

使用dplyr

尝试此操作

假设您的数据框为df

library(dplyr)

df %>% group_by(Name) %>% filter(Value == max(Value)) %>% ungroup

<强> 数据

df <- data.frame(Name  = c("A", "B", "A", "B", "C"),
             Value=c(20, 40, 35, 10, 80),
             Other_attributes=c("BLABLA1", "BLABLA2", "BLABLA3", "BLABLA4", "BLABLA5"))

答案 1 :(得分:2)

使用data.table

library(data.table)
setDT(df)[, max(Value), by = Name]