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

如何用R语言合并数据集中的两个互斥列以生成新列?

解决方案

Base R 方法

方法1:用coalesce函数(R 3.5.0及以上版本支持)

这个函数会依次取第一个非NA的值,正好匹配你的需求:

df$Column_C <- coalesce(df$Column_A, df$Column_B)

方法2:用ifelse判断

逻辑更直白,手动判断A列是否有值,没有就取B列:

df$Column_C <- ifelse(!is.na(df$Column_A), df$Column_A, df$Column_B)

dplyr 方法

如果习惯用管道式操作,dplyr的coalesce函数同样适用:

library(dplyr)
df <- df %>%
  mutate(Column_C = coalesce(Column_A, Column_B))

data.table 方法

如果用data.table处理大数据,可使用fcoalesce:

library(data.table)
setDT(df)[, Column_C := fcoalesce(Column_A, Column_B)]

测试验证

用你的示例数据构造测试框:

df <- data.frame(
  Unique_IQ = c(10204050, 10204051, 10204052, 10204053, 10204054, 10204055),
  Column_A = c("Top10%", NA, "Top90%", "Top80%", NA, NA),
  Column_B = c(NA, "Top20%", NA, NA, "Top80%", NA),
  stringsAsFactors = FALSE
)

运行任意一种方法后,Column_C的结果会和你预期完全一致:c("Top10%", "Top20%", "Top90%", "Top80%", "Top80%", NA)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:29:57