R语言中删除仅包含单个个体的分组的操作实现方法
R数据框按组内唯一个体数筛选子集的解决方案
以下提供两种常用的实现方式:
方法1:基础R实现
先统计每个分组的唯一个体数量,再筛选符合要求的分组,最后提取原数据对应子集:
# 统计每个组的唯一个体数 group_ind_count <- aggregate(data = df1, individualID ~ group, function(x) length(unique(x))) # 提取个体数大于1的组编号 valid_groups <- group_ind_count[group_ind_count$individualID > 1, "group"] # 筛选原数据 df_filtered <- df1[df1$group %in% valid_groups, ]
方法2:dplyr包实现
用分组管道操作更简洁完成筛选:
library(dplyr) df_filtered <- df1 %>% group_by(group) %>% # 仅保留组内唯一个体ID数大于1的所有行 filter(n_distinct(individualID) > 1) %>% ungroup()
两种方法输出的df_filtered都仅包含组1和组3的全部10条记录,符合需求。
内容的提问来源于stack exchange,提问作者John Majimboni
相关产品推荐
相关产品推荐

