You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用另一列填充目标列的缺失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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 21:47:35