在R语言中按组删除含缺失值的ID对应所有行
按ID移除含缺失值分组的实现方法
以下是几种在R中实现需求的常用方法:
Base R 实现
无需额外安装包,通过基础函数完成:
# 计算每个ID对应的score是否全部无缺失 id_check <- aggregate(score ~ id, data = df, FUN = function(x) all(!is.na(x))) # 筛选出符合条件的ID valid_ids <- id_check$id[id_check$score] # 提取目标数据 df_clean <- df[df$id %in% valid_ids, ]
dplyr 包实现
使用tidyverse生态的dplyr包,代码更简洁直观:
library(dplyr) df_clean <- df %>% group_by(id) %>% # 仅保留score无任何缺失的分组 filter(all(!is.na(score))) %>% ungroup()
data.table 包实现
适合处理大规模数据集,运行效率更高:
library(data.table) setDT(df) # 按ID分组,仅保留score全非缺失的组 df_clean <- df[, if (all(!is.na(score))) .SD, by = id]
内容的提问来源于stack exchange,提问作者amisos55
相关产品推荐
相关产品推荐

