基于r中的类别的最高值的子集数据帧

时间:2015-07-23 11:57:59

标签: r

我有一个像这样的数据框

Type    value
cellA   2.02
cellA   2.56
cellB   1.24
cellB   2.34
cellB   4.56
cellC   3.55
cellC   2.36
cellC   6.78
cellC   3.56

我希望根据每种类型的最高值来对其进行子集化,因此输出将是

Type    value
cellA   2.56
cellB   4.56
cellC   6.78

我怎样才能在R中实现这一点 - 这个独特的命令可以提供任何帮助 - 我有点震惊:::感谢您的建议

中号

3 个答案:

答案 0 :(得分:1)

使用dplyr可以使用top_n

完成此操作
library(dplyr)
# assume your data is in data frame df2
df2 %>% group_by(Type) %>% top_n(1)

你得到了

Selecting by value
Source: local data frame [3 x 2]
Groups: Type

   Type value
1 cellA  2.56
2 cellB  4.56
3 cellC  6.78

答案 1 :(得分:0)

我喜欢使用dplyr

dat %>% group_by(Type) %>% arrange(-value) %>%  filter(row_number()==1)

top_n肯定会更好,但我之前没有遇到过。

答案 2 :(得分:0)

使用函数聚合。

示例:

x<data.frame(Type=c('cellA','cellA','cellB','cellB','cellB','cellC','cellC','cellC','cellC'),
value =c(2.02,2.56,1.24,2.34,4.56,3.55,2.36,6.78,3.56)
)
aggregate(value~Type,max,data = x)