gpt4 book ai didi

r - dplyr mutate_at 和 case_when

转载 作者:行者123 更新时间:2023-12-04 10:32:32 25 4
gpt4 key购买 nike

我想用 starts_with() 识别变量,然后执行 case_when 突变。

例如,假设我想做相当于:

mtcars$mpg[mtcars$mpg == 21.0] <- 5; mtcars

我的尝试:
mtcars %>%
mutate_at(
vars(starts_with("mpg")),
funs(. = case_when(
. == 21.0 ~ 5,
TRUE ~ .
))
)

我究竟做错了什么? dplyr 文档似乎没有很多 mutate_at/mutate_each 的例子( this thread 似乎有同样的提示),所以我很难使用这些功能。也许我没有找对地方?

我知道 this thread但无法在那里找到解决方案。

谢谢!

最佳答案

funs创建一个函数列表,当你这样做时 funs(. = ...) ,它创建名称为 . 的命名函数,这会导致生成名称为 . 的新列如果您只有一列,或后缀为 . 的名称如果你有不止一列要变异;如果您需要覆盖原始列,只需通过将匿名函数直接传递给 funs 来保留未命名的函数。 .在您的情况下,删除 . =funs应该管用;

mtcars %>%
mutate_at(
vars(starts_with("mpg")),
funs(case_when(
. == 21.0 ~ 5,
TRUE ~ .
))
)

关于r - dplyr mutate_at 和 case_when,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49594820/

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