【问题标题】:change all columns conditional on other column以其他列为条件更改所有列
【发布时间】:2020-08-27 11:17:51
【问题描述】:

我有以下df:

df = data.frame(a = c(0,1,0,0,1), 
b= c(0,0,0,1,0), 
SL = c(1,0,1,0,0))

df2 = data.frame(a = c(NA,1,NA,0,1), 
b= c(NA,0,NA,1,0), 
SL = c(NA,0,NA,0,0))

现在,如果 SL == 1,我想将一行中的所有值更改为 NA,就像在 df2 中一样。我尝试使用 dplyr --> mutate()、cross()、mutate_all 但没有成功。

【问题讨论】:

    标签: r


    【解决方案1】:

    dplyr 的选项是

    library(dplyr)
    df <- df %>%
             mutate(across(everything(), ~ case_when(SL != 1 ~ SL)))
    df
    #   a  b SL
    #1 NA NA NA
    #2  0  0  0
    #3 NA NA NA
    #4  0  0  0
    #5  0  0  0
    

    【讨论】:

      【解决方案2】:

      使用%in%

      df[df$SL %in% 1, ] <- NA
      df
      #    a  b SL
      # 1 NA NA NA
      # 2  1  0  0
      # 3 NA NA NA
      # 4  0  1  0
      # 5  1  0  0
      

      【讨论】:

        猜你喜欢
        • 2023-01-15
        • 2019-08-20
        • 2017-08-20
        • 1970-01-01
        • 2020-02-04
        • 2012-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多