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

R语言中当某列值为NA时将另一列重编码为NA的问题

R语言数据重编码问题解决

你的问题出在两个核心点上:

  • 判断缺失值不能用i1 == NA:R中NA和任何值比较的结果都是NA,无法正确识别缺失项,必须用is.na(i1)函数检测缺失值
  • 类型不匹配:你代码里NA_real_是数值型,但TRUE分支把i2转成了字符型,类型冲突引发报错

直接用下面的代码就能得到你要的结果:

library(dplyr)

df <- data.frame(id = c(1,2,3),
                 i1 = c(1,NA,0),
                 i2 = c(1,1,1))

df <- df %>%
  mutate(i2 = case_when(
    is.na(i1) ~ NA_real_,
    TRUE ~ i2  # 保持原数值类型,无需转字符
  ))

df

运行后输出:

id i1 i2
1  1  1  1
2  2 NA NA
3  3  0  1

另外也可以用更简洁的索引方式实现相同效果:

df$i2[is.na(df$i1)] <- NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:20:30