如何在dplyr :: mutate()的RHS上使用动态变量?

ian

是否可以在RHS上使用动态变量dplyr::mutate()

玩具示例:

temp <- tibble(
  bl = c(1,2,3,4,5),
  fu = c(11,22,33,44,55)
)

bl_var = "bl"
replacement_var = "fu"

# I want a dynamic version of this:
temp %>%
  mutate(bl = fu)

# Something like:
temp %>%
  mutate(!!bl := !!fu)

在我的实际用例中,我在基线测量了很多变量,在后续阶段测量了另一组变量。我不想再花一点时间,但想用后续变量替换基线变量。

该变量具有一致的命名方案:

基线变量可能是:x_1,x_2,x_3,...

后续变量将为:x_fu_1,x_fu_2,x_fu_3,...

感谢@akrun提供的整洁解决方案。对于其他类似情况的人,我修改了他们的解决方案,以将更新的基准变量连接回原始数据:

map2_dfc(baseline, followup, ~ temp %>%
  group_by_at(vars(!! row_id)) %>%
    transmute(!! .y := !! rlang::sym(.x))) %>%
right_join(temp, by = row_id)
阿克伦

由于它是一个字符串,我们可以转换为symbol并求值(!!)以获取对象的值

library(dplyr)
temp %>%
   mutate(!!bl_var := !! rlang::sym(replacement_var))
# A tibble: 5 x 2
#     bl    fu
#  <dbl> <dbl>
#1    11    11
#2    22    22
#3    33    33
#4    44    44
#5    55    55

如果我们有多个变量,请为每个变量创建一个向量,然后使用mapfor循环执行此操作

library(stringr)
baseline <- str_c("x", 1:3, sep="_")
followup <- str_c("x_fu", 1:3, sep="_")
for(i in seq_along(baseline)) {
     temp <- temp %>%
                mutate(!! followup[i] := !! rlang::sym(baseline[i]) * 5)

    }

或使用 map2

library(purrr)
map2_dfc(baseline, followup, ~ temp %>%
                              transmute(!! .y := !! rlang::sym(.x) * 5)) %>%
    bind_cols(temp, .)

还有其他选项,例如_atwithtransmute_atmutate_atormutate/across可以将字符串作为列名

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用动态变量?

来自分类Dev

dplyr mutate替换动态变量名称

来自分类Dev

如何在dplyr中使用mutate来动态修改变量?

来自分类Dev

如何在使用 Python 的 Where 子句上对动态变量使用 AND/OR 条件?

来自分类Dev

如何使用jQuery创建动态变量?

来自分类Dev

如何使用jQuery创建动态变量?

来自分类Dev

PHP:如何使用动态变量

来自分类Dev

如何在Angular Translate Rails中使用动态变量?

来自分类Dev

如何在react-axios中使用动态变量?

来自分类Dev

如何在PandaSQL查询中使用动态变量(元组)?

来自分类Dev

如何在React函数中使用动态变量

来自分类Dev

如何在xilinx中使用动态变量

来自分类Dev

如何在smarty模板函数中使用动态变量

来自分类Dev

如何在Angular Translate Rails中使用动态变量?

来自分类Dev

我如何在 PHP 中使用动态变量

来自分类Dev

如何在dplyr :: filter中使用变量?

来自分类Dev

如何在dplyr中使用变量列表?

来自分类Dev

如何在变量上使用 base::scale() 和 dplyr::filter()

来自分类Dev

在具有动态变量的R中使用dplyr汇总

来自分类Dev

如何在 dplyr mutate() 函数中使用 case_when ?

来自分类Dev

R:我如何在 dplyr 中使用 mutate 进行分组?

来自分类Dev

如何在dplyr中动态创建或调用变量和函数?

来自分类Dev

如何在R中使用ifelse或dplyr?

来自分类Dev

如何在dplyr中使用SQL count(*)?

来自分类Dev

如何使ng-model-options使用动态变量?

来自分类Dev

如何使用动态变量从数据库中选择

来自分类Dev

如何使用动态变量转换成角度

来自分类Dev

如何使用文件厨师资源中的动态变量?

来自分类Dev

如何使用动态变量设置/查询列表项?

Related 相关文章

热门标签

归档