R语言如何查找score列缺失1、2、3任意值的id并保存为向量
实现方法
你原代码的问题是group_by()后没有针对每个分组执行独立的判断逻辑,直接调用全局判断只会对整个数据集生效,无法得到分组统计结果。
dplyr 实现方案
library(dplyr) # 直接提取缺失所需值的id向量 missing_ids <- df %>% group_by(id) %>% # 判断当前分组的score列是否不全包含1、2、3 filter(!all(c(1, 2, 3) %in% score)) %>% pull(id) %>% unique() # 对重复id去重
如果需要先查看每个id的匹配情况再提取,可以先做分组汇总:
id_check_result <- df %>% group_by(id) %>% summarise( is_complete = all(c(1,2,3) %in% score), .groups = "drop" ) # 提取不满足条件的id missing_ids <- id_check_result %>% filter(!is_complete) %>% pull(id)
基础R实现方案(无需加载第三方包)
# 按id拆分score列 score_by_id <- split(df$score, df$id) # 判断每个id的score是否不全包含目标值,提取对应id missing_ids <- names(which(!sapply(score_by_id, function(x) all(c(1,2,3) %in% x))))
内容的提问来源于stack exchange,提问作者Maria Alva
相关产品推荐
相关产品推荐

