提取有条件的分组子集
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)
的行。
例如组 1
有 sum(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
我有以下数据结构:
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 万行。所以请考虑性能。
有样本数据
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