提取有条件的分组子集

Extract grouped Subset with condition

我有以下数据结构:

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 万行。所以请考虑性能。

有样本数据

dd<-read.table(text="Group Count Value
1     1     1000
1     10    2000
2     6     1000
2     7     2000", header=T)

你可以用 base 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