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

如何基于源数据集的疾病代码匹配填充新数据集的疾病名称?

解决方法

你原来的代码存在几个明显问题:

  • 逻辑判断用了赋值符号=,正确的逻辑相等判断应该用==
  • 错误引用了不存在的de$DESCRIPTION,实际应该调用源数据的df$colB
  • 直接跨数据集使用case_when会因为行数不匹配导致错误,这种场景不适合用case_when做匹配

针对你的需求,这里提供两种高效可行的解决方案:

方案一:使用dplyr的连接操作(推荐)

通过左连接匹配疾病名称,再填充空值,保留已有正确值:

library(dplyr)

df1 <- df1 %>%
  # 左连接源数据,匹配col1对应的colB
  left_join(df, by = "col1", suffix = c("", "_from_df")) %>%
  # 填充col2的空值,已有值保持不变
  mutate(col2 = ifelse(col2 == "", colB, col2)) %>%
  # 删除临时生成的colB列
  select(-colB)

方案二:使用match函数直接定位填充

如果不想使用连接操作,可通过match找到对应位置直接赋值:

# 找到df1中每个col1在df的col1里的位置索引
match_indices <- match(df1$col1, df$col1)
# 仅填充col2为空的行
df1$col2[df1$col2 == ""] <- df$colB[match_indices][df1$col2 == ""]

两种方法都能轻松处理400+条记录的数据集,不会有性能问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:05:32