我有一个像这样的数据框
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中实现这一点 - 这个独特的命令可以提供任何帮助 - 我有点震惊:::感谢您的建议
中号
答案 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)