首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用data.table按聚合值划分子集

问用data.table按聚合值划分子集
EN

Stack Overflow用户
提问于 2020-05-22 15:40:36
回答 1查看 54关注 0票数 0

假设我将data.table按某一列分组,并计算每个组的值。然后,我要删除具有计数N < 2的组。有没有一种高效的,data.table的方法来做到这一点?

示例数据:

代码语言:javascript
复制
id | col1
-------------
1  | "A"
2  | "A"
3  | "B"
4  | "C"
5  | "C"

现在:按col1分组并计数,删除属于count < 2组的行

示例输出:(删除了行3 )

代码语言:javascript
复制
id | col1
-------------
1  | "A"
2  | "A"
4  | "C"
5  | "C"

我发现了一些类似的Subset by group with data.table,但我不想找到每个组的特定行,而是如果它们的聚合满足某一条件的话,就标识整个组。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-22 15:44:00

代码语言:javascript
复制
values_2_keep <- DT[, .N, by = col1][N>=2, col1] 
# Alternatively DT[rowid(col1)==2L, col1]

DT[col1 %in% values_2_keep]

   id col1
1:  1    A
2:  2    A
3:  4    C
4:  5    C

可复制的数据:

代码语言:javascript
复制
DT <- data.table(
  id = 1:5,
  col1 = c("A", "A", "B", "C", "C")
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61958691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档