gpt4 book ai didi

r - 同时对多列使用 dplyr 进行条件变异

转载 作者:行者123 更新时间:2023-12-01 22:07:06 25 4
gpt4 key购买 nike

dplyr 中的条件变异使用 if_else() 是“简单的”(有点):

can dplyr package be used for conditional mutating?

但是,假设我想同时改变x,y,z,基于一个逻辑条件C,它依赖于列group:同样,只有当 C 为 TRUE 时,突变才会发生,否则 x,y,z 保持不变。我怎样才能做到这一点?在 base R 中,它很简单:

n <- 5 
k <- 10
my_labels <- LETTERS[1:5]

foobar <- data.frame(group = gl(n, k, labels = my_labels), x = runif(n*k), y=rnorm(n*k), z = rpois(n*k, 1), month_name = (rep(month.name[1:k], n)))

# mutate x, y, z, only if the condition on group is TRUE
foobar[foobar$group %in% c("B","E"), c("x", "y", "z")] <- NA

如何使用 dplyr 获得相同的结果(如果可能)?

最佳答案

我们可以在 mutate_at 中使用 replace

library(dplyr)
foobar %>%
mutate_at(vars(x, y, z),
funs(replace(., group %in% c("B", "E"), NA)))

如果我们想使用if_else

foobar %>% 
mutate_at(vars(x, y, z),
funs(if_else(group %in% c("B", "E"), NA_real_, as.numeric(.))))

关于r - 同时对多列使用 dplyr 进行条件变异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50897070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com