R dplyr:如何删除较小的组?
我想使用R dplyr:如何删除较小的组?,r,dplyr,R,Dplyr,我想使用dplyr删除较小的组。例如,数据帧: ID group value 1 1 6 2 1 2 3 2 0 4 2 5 5 2 3 6 3 7 7 3 1 8 4 3 9 4 7 10 4 5 组1、组2、组3和组4的组大小分别为2、3、2和3,我想删除组1和组3,因为它们的大小小于3。提前谢谢你 您可以使用n()获取每个组的行数,并对其进行筛选,请查
dplyr
删除较小的组。例如,数据帧:
ID group value
1 1 6
2 1 2
3 2 0
4 2 5
5 2 3
6 3 7
7 3 1
8 4 3
9 4 7
10 4 5
组1、组2、组3和组4的组大小分别为2、3、2和3,我想删除组1和组3,因为它们的大小小于3。提前谢谢你 您可以使用n()
获取每个组的行数,并对其进行筛选,请查看?n()
,关于n()
用法的最后一个示例是根据组的大小进行筛选:
df %>% group_by(group) %>% filter(n() >= 3)
# Source: local data frame [6 x 3]
# Groups: group [2]
# ID group value
# <int> <int> <int>
# 1 3 2 0
# 2 4 2 5
# 3 5 2 3
# 4 8 4 3
# 5 9 4 7
# 6 10 4 5
df%>%groupby(group)%>%filter(n()>=3)
#来源:本地数据帧[6 x 3]
#分组:分组[2]
#ID组值
#
# 1 3 2 0
# 2 4 2 5
# 3 5 2 3
# 4 8 4 3
# 5 9 4 7
# 6 10 4 5
我们也可以使用数据表。将“data.frame”转换为“data.table”(setDT(df1)
),按“group”分组,如果一个组(.N
)内的观察数大于2,则获取data.table的子集
library(data.table)
setDT(df1)[, if(.N >2 ) .SD, by = group]
# group ID value
#1: 2 3 0
#2: 2 4 5
#3: 2 5 3
#4: 4 8 3
#5: 4 9 7
#6: 4 10 5
或使用base R
tbl <- table(df1$group)> 2
subset(df1, group %in% names(tbl)[tbl])
# ID group value
#3 3 2 0
#4 4 2 5
#5 5 2 3
#8 8 4 3
#9 9 4 7
#10 10 4 5
tbl2
子集(df1,组%in%名称(tbl)[tbl])
#ID组值
#3 3 2 0
#4 4 2 5
#5 5 2 3
#8 8 4 3
#9 9 4 7
#10 10 4 5
tbl <- table(df1$group)> 2
subset(df1, group %in% names(tbl)[tbl])
# ID group value
#3 3 2 0
#4 4 2 5
#5 5 2 3
#8 8 4 3
#9 9 4 7
#10 10 4 5