以编程方式使用dplyr case_w [英] use dplyr case_when programmatically

查看:93
本文介绍了以编程方式使用dplyr case_w的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to use dplyr case_when and pass variable but the result was not as expected.

示例:

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

但是,当我尝试传递变量时,它将全部返回为低

However, when I try to pass a variable, it returns all as "low"

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


推荐答案

这是一个操作顺序问题,您需要使用方括号:

This is an order of operations problem, you need to use brackets:

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

看看这篇文章这篇文章

这篇关于以编程方式使用dplyr case_w的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆