按列方式应用任何公式

时间:2017-06-23 04:53:23

标签: r

现在如何从第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)  

提前致谢

2 个答案:

答案 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