现在如何从第3列开始动态地对所有列应用ifelse
语句
Date name A B C XYZ
2014 sam 22 0 -1 20
2015 john -1 29 0 40
我们可以通过硬编码来做,不包括1列和2列
df1$A = ifelse(df$A <= 0 ,NA,df$A) #to
df1$XYZ = ifelse(df$XYZ <= 0 ,NA,df$XYZ)
提前致谢
答案 0 :(得分:0)
使用dplyr
/ tidyverse
:
library(tidyverse)
df1 = df1 %>%
mutate_at(vars(A:XYZ), function(x) { ifelse(x <= 0, NA, x)})
输出:
Date name A B C XYZ
1 2014 sam 22 NA NA 20
2 2015 john NA 29 NA 40
答案 1 :(得分:0)
使用base R
,我们可以遍历感兴趣的列,应用ifelse
并将其分配回这些列
df1[3:ncol(df1)] <- lapply(df1[3:ncol(df1)], function(x) ifelse(x <=0, NA, x))
但是,我们可以更轻松地执行此操作而无需任何循环或ifelse
df1[3:ncol(df1)][df1[3:ncol(df1)] <=0] <- NA