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
相关产品推荐
相关产品推荐

