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

在R中合并数据后基于变量存在性创建新列

解决方案:为患者数据框添加治疗标记列

核心需求实现

要保留df1所有行,并基于df2的患者ID生成0/1标记的tx列,同时捕获df2中可能存在的无效ID,可按以下步骤操作:

1. 合并数据并生成标记列

直接在左连接时给df2预先添加标记,再统一处理缺失值:

library(dplyr)

# 为df2新增tx=1的列,再与df1左连接,最后将缺失值转为0
df_combined <- df1 %>%
  left_join(df2 %>% mutate(tx = 1), by = "id") %>%
  mutate(tx = ifelse(is.na(tx), 0, tx))

逻辑说明:

  • 先给df2的所有行添加tx=1,代表这些患者接受了额外治疗
  • 与df1左连接后,未匹配到df2的行tx会显示为NA,用ifelse将这些NA转为0,代表未接受治疗

运行后即可得到目标结果:

id      date    tx
0001    2/2/22  0
0002    1/1/22  1
0002    3/2/22  1
0003    3/2/22  0
0003    5/2/22  0
0004    6/7/22  1
0004    9/2/22  1

2. 捕获无效ID

如果df2中存在df1没有的ID,可通过以下代码检测并提示:

# 找出df2中不在df1里的ID
invalid_ids <- df2$id[!df2$id %in% df1$id]

# 若存在无效ID,抛出警告
if (length(invalid_ids) > 0) {
  warning(paste("df2中存在df1未包含的ID:", paste(invalid_ids, collapse = ", ")))
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:34:49