在R中如何筛选对应Group列包含多组的ID数据?
筛选同时属于多组的ID对应数据
你之前的代码错误在于要求同一行的Group列同时等于A和B,这在单一行里不可能实现,所以返回空结果。正确的思路是先找出那些ID——它们的Group列中同时包含A和B两个分组,再提取这些ID对应的所有行。
下面是两种可用的dplyr解决方案:
方法一:分组后直接筛选
library(dplyr) df %>% group_by(ID) %>% filter(all(c("A", "B") %in% Group)) %>% ungroup()
group_by(ID):按ID对数据分组all(c("A", "B") %in% Group):检查当前ID对应的所有Group值是否同时包含A和Bungroup():取消分组,返回常规数据框
方法二:先提取目标ID再筛选
# 第一步:获取同时包含A、B组的ID target_ids <- df %>% group_by(ID) %>% summarise(has_both = all(c("A", "B") %in% Group)) %>% filter(has_both) %>% pull(ID) # 第二步:筛选这些ID对应的所有行 df %>% filter(ID %in% target_ids)
这种方法先单独提取符合条件的ID列表,再用该列表筛选原数据,逻辑更直观。
内容的提问来源于stack exchange,提问作者Muginson
相关产品推荐
相关产品推荐

