我有以下数据结构:
Group Count Value
1 1 1000
1 10 2000
2 6 1000
2 7 2000
某些具有计数值和数据值的组。现在我只想要那些count > 0.25 * sum(count of group)
的行。
例如,组1
有sum(count) = 11
,因此第一行不应包含在结果中。
结果应如下所示:
Group Count Value
1 10 2000
2 6 1000
2 7 2000
我怎样才能在R?
中这样做此外,我的数据集有大约500万行。所以请考虑表现。
答案 0 :(得分:3)
使用样本数据
dd<-read.table(text="Group Count Value
1 1 1000
1 10 2000
2 6 1000
2 7 2000", header=T)
你可以用基础R
来做到这一点subset(dd, Count>.25*ave(Count, Group, FUN=sum))
或dplyr
库
library(dplyr)
dd %>% group_by(Group) %>% filter(Count > .25 * sum(Count))
或许你会发现一个更具可读性。两者都回归
Group Count Value
2 1 10 2000
3 2 6 1000
4 2 7 2000