【问题标题】:use dplyr case_when programmatically以编程方式使用 dplyr case_when
【发布时间】:2017-12-02 21:03:36
【问题描述】:

我正在尝试使用 dplyr case_when 并传递变量,但结果不如预期。

例子:

library(dplyr)
mtcars %>% 
  mutate(cg = case_when(carb <= 2 ~ "low",
                        carb > 2  ~ "high")) ---this works

但是,当我尝试传递一个变量时,它会全部返回为“低”

var <- quo(carb)
mtcars %>% 
  mutate(cg = case_when(!!var <= 2 ~ "low",
                    !!var > 2  ~ "high"))

【问题讨论】:

  • 你提出的代码对我有用

标签: r dplyr


【解决方案1】:

这是一个运算顺序问题,需要用括号:

quo_function <- function(df, var) {
  df %>%
    mutate(cg = case_when((!!var) <= 2 ~ "low",
                          (!!var) > 2 ~ "high"))  
}

看看这个帖子this post

【讨论】:

  • 我能说的最好的就是 (!!var) 可以用 var 替换。
猜你喜欢
  • 2017-12-02
  • 2018-06-09
  • 2021-06-02
  • 2020-09-16
  • 1970-01-01
  • 2020-05-31
  • 2019-04-01
  • 2021-01-19
相关资源
最近更新 更多