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

使用R语言dplyr依据ID列值替换var3列中NA值失败求助

问题原因与解决方法

错误根源

在R中,不能用== NA来判断缺失值。因为NA代表“未知值”,任何与NA的比较运算(包括==)结果都是NA,而非TRUE/FALSE。这会导致你的case_when条件永远不会被触发,自然无法完成NA值的替换。

修正后的代码

基础修正版

直接将var3 == NA替换为R中判断缺失值的标准函数is.na(var3):

library(dplyr)

df %>% 
  mutate(var3 = case_when(
    is.na(var3) & ID == 3 ~ 5,
    is.na(var3) & ID == 5 ~ 5,
    is.na(var3) & ID == 7 ~ 5,
    TRUE ~ var3
  ))

优化简洁版

如果多个ID需要替换为同一个值,可以把目标ID放入向量中,简化条件写法:

df %>% 
  mutate(var3 = case_when(
    is.na(var3) & ID %in% c(3,5,7) ~ 5,
    TRUE ~ var3
  ))

运行结果

修正后执行代码,会得到正确替换缺失值后的数据集:

ID var1 var2 var3
1   1    a    1   21
2   2    b    1   50
3   3    c    1   40
4   3    c    0    5
5   4    d    1   29
6   5    e    1   45
7   5    f    0    5
8   7    g    0    5
9   7    h    1    5
10  8    h    0   46

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:52:40