R, dplyr, Условно изменить значения в нескольких столбцах на основе одного условного столбца в R - PullRequest
0 голосов
/ 27 ноября 2018

С учетом следующего фрейма данных:

df <- data.frame("a" = 1:5, "b" = 2:6, "c" = 3:7, "d" = c(NA,1,1,0,0))

Как изменить значения в столбцах a, b и c на NA, если значения в столбце d либоNA или 0?Я могу заставить его работать легко для отдельных столбцов, например, df[,3][df$d==0|is.na(df$d)] <- NA, но у меня возникают проблемы с настройкой работы нескольких столбцов.Я был бы очень признателен за решения в базе R или dplyr.Спасибо

1 Ответ

0 голосов
/ 27 ноября 2018

Вы имеете в виду это?

cols <- c("a", "b", "c")
df[is.na(df$d) | df$d == 0, cols] <- NA
df
#   a  b  c  d
#1 NA NA NA NA
#2  2  3  4  1
#3  3  4  5  1
#4 NA NA NA  0
#5 NA NA NA  0

Или в dplyr

library(dplyr)
df %>% mutate_at(vars(a:c), funs(ifelse(is.na(d) | d == 0, NA, .)))
#   a  b  c  d
#1 NA NA NA NA
#2  2  3  4  1
#3  3  4  5  1
#4 NA NA NA  0
#5 NA NA NA  0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...