如何在 R 中将 mutate_at() 与两组变量一起使用

2024-07-03

使用 dplyr,我想将一列除以另一列,其中两列具有相似的模式。 我有以下数据框:

My_data = data.frame(
  var_a = 101:110,
  var_b = 201:210,
  number_a = 1:10,
  number_b = 21:30)

我想创建一个新变量:var_a_new = var_a/number_a、var_b_new = var_b/number_b 等等(如果我有 c、d 等)。

My_data %>%
  mutate_at(
    .vars = c('var_a', 'var_b'),
    .funs = list( new = function(x) x/(.[,paste0('number_a', names(x))]) ))

我没有得到错误,但得到了错误的结果。我认为问题是我不明白“x”是什么。它是 .vars 中的字符串之一吗?它是 My_data 中的一列吗?还有别的事吗?


一种选择可能是:

bind_cols(My_data,
          My_data %>%
           transmute(across(starts_with("var"))/across(starts_with("number"))) %>%
           rename_all(~ paste0(., "_new")))

   var_a var_b number_a number_b var_a_new var_b_new
1    101   201        1       21 101.00000  9.571429
2    102   202        2       22  51.00000  9.181818
3    103   203        3       23  34.33333  8.826087
4    104   204        4       24  26.00000  8.500000
5    105   205        5       25  21.00000  8.200000
6    106   206        6       26  17.66667  7.923077
7    107   207        7       27  15.28571  7.666667
8    108   208        8       28  13.50000  7.428571
9    109   209        9       29  12.11111  7.206897
10   110   210       10       30  11.00000  7.000000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 R 中将 mutate_at() 与两组变量一起使用 的相关文章

随机推荐