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

R语言数据框合并列:用X3值替换X2中的NA

没问题,这是数据清洗里非常常见的需求,我给你两种实用的解法,你可以根据自己的代码风格选择:

首先,先把你提到的示例数据框写出来,方便你直接测试:

df <- data.frame(
  X1 = 1:6,
  X2 = c(123, 125, 210, NA, 214, NA),
  X3 = c(NA, 125, NA, 212, 213, 225)
)

方法一:Base R 原生实现

用基础包的ifelse()函数就能搞定,逻辑很直观:判断X2的每个值是否为NA,如果是就取X3对应位置的值,否则保留X2原来的值,最后删掉X3列即可:

# 替换X2中的NA为X3对应值
df$X2 <- ifelse(is.na(df$X2), df$X3, df$X2)
# 移除不需要的X3列
df$X3 <- NULL

方法二:tidyverse/dplyr 简洁实现

如果你平时习惯用tidyverse系列工具,dplyr::coalesce()函数就是专门为这种场景设计的——它会按顺序返回每个位置上第一个非NA的值,用起来特别清爽:

library(dplyr)

# 处理数据并生成新的干净数据框
df_cleaned <- df %>%
  mutate(X2 = coalesce(X2, X3)) %>%  # 用X3填充X2的NA
  select(-X3)  # 移除X3列

两种方法运行后都会得到你想要的结果:

X1  X2
1  1 123
2  2 125
3  3 210
4  4 212
5  5 214
6  6 225

内容的提问来源于stack exchange,提问作者MPopp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 22:07:43