[英]R, dplyr, Conditionally change values in multiple columns based on one conditional column in R
Given the following data frame: 给定以下数据框:
df <- data.frame("a" = 1:5, "b" = 2:6, "c" = 3:7, "d" = c(NA,1,1,0,0))
How can I change values in columns a
, b
, and c
to NA
if values in column d
are either NA
or 0
? 如果
d
列的值为NA
或0
,如何将a
, b
和c
列a
值更改为NA
? I can get it to work easily for individual columns, eg, df[,3][df$d==0|is.na(df$d)] <- NA
, but I'm having trouble getting something to work across multiple columns. 我可以轻松地使它适用于各个列,例如
df[,3][df$d==0|is.na(df$d)] <- NA
,但是我很难使某些东西可以工作多列。 I'd very much appreciate solutions in base R or dplyr
. 我非常感谢R或
dplyr
基中的解决方案。 Thanks 谢谢
Do you mean this? 你是这个意思吗
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
Or in dplyr
或在
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.