Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R dplyr:如何删除较小的组?_R_Dplyr - Fatal编程技术网

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