首页 > 解决方案 > For循环根据R中的条件用NA替换值

问题描述

我正在尝试根据条件用 NA 替换值。我编写了以下代码,它工作正常:

df <- df %>% 
mutate(var1 = ifelse(years > 0, NA, var1)

我需要为 80 多个不同的变量运行此代码,因此我尝试使用 for 循环(而不是复制粘贴)。我已经尝试了以下代码,但它不起作用

for(i in c(13:100))
   {df <- df %>% 
         mutate(i = ifelse(df$years > 0, NA, i))}

理想情况下,循环的输出将存储回原始数据帧中。非常感谢,任何帮助都非常感谢!

标签: r

解决方案


这应该直接工作:

df[df$years > 0, 13:100] <- NA

考虑这个小例子:

set.seed(123)
df <- data.frame(years = c(-1, 1, -3, -4, 9), var1 = rnorm(5), var2 = rnorm(5))
df

#  years        var1       var2
#1    -1 -0.56047565  1.7150650
#2     1 -0.23017749  0.4609162
#3    -3  1.55870831 -1.2650612
#4    -4  0.07050839 -0.6868529
#5     9  0.12928774 -0.4456620
df[df$years > 0, 2:3] <- NA
df

#  years        var1       var2
#1    -1 -0.56047565  1.7150650
#2     1          NA         NA
#3    -3  1.55870831 -1.2650612
#4    -4  0.07050839 -0.6868529
#5     9          NA         NA

推荐阅读