我有以下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,但没有成功。
答案 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