r - 在单个 mutate() 语句中组合多个 cross(),同时控制 R 中的变量名称

标签 r tidyverse dplyr across

我有以下数据框:

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
所以这行得通,但新值取代了旧值。如何将结果添加到数据框中并控制新名称?

最佳答案

您可以使用 .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

关于r - 在单个 mutate() 语句中组合多个 cross(),同时控制 R 中的变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65022985/

相关文章:

r - 使用来自库 mouse() 的估算数据集来拟合 R 中的多级模型

r - 根据 Shiny 仪表板中选择的选项卡面板隐藏和显示侧边栏

r - `contrasts<-` (`*tmp*` 中的错误,值 = contr.funs[1 + isOF[nn]]) 具有明显正确的数据集

r - 如何在R中操作数据?

r - 如何将列表列表转换为小标题(数据框)

r - tidyverse 使用重复键传播并根据唯一键填充 NA

r - dbplyr:从数据库中的表中删除行

r - 将 R 公式与 dplyr 结合使用

r - 可视化每组每天的汇总统计数据

r - dplyr - 用条件总结