【问题标题】:Using dplyr::mutate_at with case_when conditional on another variable使用 dplyr::mutate_at 和 case_when 以另一个变量为条件
【发布时间】:2020-03-21 16:13:31
【问题描述】:

我想根据条件以不同方式转换一组变量。我找到了解决方案here

示例:如果 'gear' 等于 4,我想从所有变量 'mpg' 到 'disp' 中减去 4,否则我减去 3。

mtcars %>% 
  mutate_at(vars(mpg:disp),
            funs(case_when(gear == 4 ~ . - 4L, TRUE ~ . -3L))) 

但我收到此警告:

funs() is soft deprecated as of dplyr 0.8.0
Please use a list of either functions or lambdas: 

# Simple named list: 
`list(mean = mean, median = median)`
# Auto named with `tibble::lst()`: 
`tibble::lst(mean, median)`
# Using lambdas
`list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))`

This warning is displayed once per session.  

有没有更好的解决方案来避免使用funs()

【问题讨论】:

    标签: r dplyr tidyverse lifecycle


    【解决方案1】:

    repro 这样做

    mtcars %>% mutate_at(vars(mpg:disp), ~ case_when(gear == 4 ~ . - 4L, TRUE ~ . -3L)) 
    

    【讨论】:

    • 谢谢。这是一个非常简单的解决方法,我自己还没有想出。
    猜你喜欢
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 2023-01-11
    • 2018-04-07
    • 1970-01-01
    相关资源
    最近更新 更多