使用条件提取分组的子集

时间:2015-05-21 18:34:31

标签: r subset

我有以下数据结构:

Group Count Value
1     1     1000
1     10    2000
2     6     1000
2     7     2000

某些具有计数值和数据值的组。现在我只想要那些count > 0.25 * sum(count of group)的行。 例如,组1sum(count) = 11,因此第一行不应包含在结果中。

结果应如下所示:

Group Count Value
1     10    2000
2     6     1000
2     7     2000

我怎样才能在R?

中这样做

此外,我的数据集有大约500万行。所以请考虑表现。

1 个答案:

答案 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