4

我有以下数据框:

df = data.frame(a = 10, b = 20, a_sd = 2, b_sd = 3)

   a  b a_sd b_sd
1 10 20    2    3

我想计算 a/a_sd、b/b_sd,并将结果添加到数据框中,并将它们命名为 ratio_a、ratio_b。在我的数据框中,我有很多变量,所以我需要一个“广泛”的解决方案。我试过:

df %>% 
  mutate( across(one_of( c('a','b')))/across(ends_with('_sd'))) 

这给了:

  a        b a_sd b_sd
1 5 6.666667    2    3

所以这行得通,但新的价值观取代了旧的价值观。如何将结果添加到数据框中并控制新名称?

4

1 回答 1

6

你可以在.names里面使用参数across

df %>% 
  mutate(across(one_of(c('a','b')), .names = 'ratio_{col}')/across(ends_with('_sd'))) 
#    a  b a_sd b_sd ratio_a  ratio_b
# 1 10 20    2    3       5 6.666667
于 2020-11-26T13:31:50.463 回答