更改所有列以其他列为条件

时间:2020-08-27 11:17:51

标签: r

我有以下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))

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

2 个答案:

答案 0 :(得分:2)

带有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

答案 1 :(得分:1)

使用%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