如何用另一列填充目标列的缺失NA值(R语言数据集处理)
解决R语言中缺失值填充的需求
首先要注意一个关键细节:你提供的初始数据里,Death_or_Follow_Up_Date和Follow_Up_Date列中的"NA"是字符串类型,不是R原生的缺失值NA。如果不先修正这一点,后续的缺失值判断会失效,所以第一步我们要把这些字符串"NA"转换成真正的缺失值。
完整实现步骤
1. 修正初始数据的缺失值格式
首先运行这段代码,把字符型的"NA"替换为R的原生缺失值:
# 你的初始数据集 data <- data.frame( Study_ID = c("100","200","300","400","500","600","700","800","900","1000"), Death_or_Follow_Up_Date = c("012022","031021","051822","NA","042521","NA","061020","032021","NA","NA"), Follow_Up_Date = c("052321","091121","NA","042322","NA","062720","NA","062520","012021","111021") ) # 将字符型"NA"转换为原生缺失值NA data$Death_or_Follow_Up_Date[data$Death_or_Follow_Up_Date == "NA"] <- NA data$Follow_Up_Date[data$Follow_Up_Date == "NA"] <- NA
2. 实现缺失值填充(两种方法可选)
方法一:基础R的ifelse函数
用基础R的条件判断函数就能完成,逻辑很直观:当Death_or_Follow_Up_Date是缺失值时,用Follow_Up_Date的值填充,否则保留原值:
data$Death_or_Follow_Up_Date <- ifelse( is.na(data$Death_or_Follow_Up_Date), data$Follow_Up_Date, data$Death_or_Follow_Up_Date )
方法二:tidyverse的coalesce函数(更简洁)
如果你习惯使用dplyr,coalesce函数专门用来处理这种“取第一个非缺失值”的场景,一行代码搞定:
library(dplyr) data <- data %>% mutate(Death_or_Follow_Up_Date = coalesce(Death_or_Follow_Up_Date, Follow_Up_Date))
3. 查看最终结果
运行完上面的代码后,查看你的数据集,就会得到你期望的结果:
print(data)
输出如下:
Study_ID Death_or_Follow_Up_Date Follow_Up_Date 1 100 012022 052321 2 200 031021 091121 3 300 051822 <NA> 4 400 042322 042322 5 500 042521 <NA> 6 600 062720 062720 7 700 061020 <NA> 8 800 032021 062520 9 900 012021 012021 10 1000 111021 111021
内容的提问来源于stack exchange,提问作者sabc04
相关产品推荐
相关产品推荐

