如何在R语言中按列提取含NA值的ID列表?
获取数据框各列含NA值的ID列表
假设你用R语言处理数据,以下是两种直接实现的方法:
基础R方法
先构造示例数据:
df <- data.frame( ID = 1:5, col1 = c(2, NA, 8, 0, NA), col2 = c(NA, 2, 19, NA, 4) )
遍历各列提取对应NA的ID:
# 遍历除ID外的所有列,提取含NA的ID na_id_list <- sapply(df[-1], function(col) df$ID[is.na(col)]) # 转换为数据框格式 result_df <- as.data.frame(na_id_list)
运行后result_df就是你需要的结果:
col1 col2 1 2 1 2 5 4
tidyverse 方法
如果你习惯用tidyverse工具包:
library(tidyverse) result_df <- df %>% # 宽表转长表,方便筛选NA pivot_longer(cols = -ID, names_to = "column", values_to = "value") %>% # 筛选出值为NA的行 filter(is.na(value)) %>% # 转回宽表,将ID按列整理 pivot_wider(names_from = "column", values_from = "ID", values_fn = list) %>% # 展开列表为多行 unnest(cols = c(col1, col2))
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

