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

如何在R中根据条件用另一列非缺失值覆盖目标列对应值

解决方法

核心逻辑为优先取有缺失的列的有效值,缺失时保留无缺失列的原值。你需要先将两个表按ID全连接合并,再做值替换即可。

前置处理

如果你的原始数据中缺失值为字符串"N/A",需要先转为R可识别的NA:

# 替换字符串格式的缺失值
df[df == "N/A"] <- NA

如果两个原始表还未合并,先按ID全连接(可保留仅在单张表出现的人员):

library(dplyr)
# 假设表a含ID、exit1(存在缺失的列),表b含ID、exit2(无缺失的列)
df <- full_join(a, b, by = "ID")

方法1:dplyr实现(推荐)

用coalesce()函数直接实现「优先取exit1的值,exit1缺失时取exit2」的逻辑:

df_result <- df %>%
  mutate(exit2 = coalesce(exit1, exit2)) %>%
  select(ID, exit2)

方法2:基础R实现

不依赖第三方包可以用ifelse()做条件判断:

df$exit2 <- ifelse(!is.na(df$exit1), df$exit1, df$exit2)
df_result <- df[, c("ID", "exit2")]

处理后得到的df_result即为你需要的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:45:02