r - dplyr 在 mutate() 中使用 select() 助手

标签 r dplyr

<分区>

我想创建一个新变量,它表示许多其他以“prefix_”开头的变量的总和(或其他函数)。有没有办法使用这些 select() 助手(例如 starts_with())巧妙地做到这一点?

认为 mutate_at() 对此不起作用,因为我只是想根据许多现有变量创建一个新变量。

我的尝试:

df %<>%
  mutate(newvar = sum(vars(starts_with("prefix_"))))

这当然不行。非常感谢!

一个可重现的例子:

mtcars %<>% 
  rename("prefix_mpg" = mpg) %>% 
  rename("prefix_cyl" = cyl) %>% 
  mutate(newvar = sum(var(starts_with("prefix_"))))

预期输出将是 mtcars$newvar,它是 prefix_mpg 和 prefix_cyl 的总和。当然,我可以明确命名 mpg 和 cyl,但在我的实际情况中,它是一长串变量,太长以至于命名不方便。

最佳答案

我们可以在 select 调用中使用 starts_with 并将它们放入 rowSums 函数中。 . 是一种从上一个管道操作的输出中指定对象的方法。

library(dplyr)

mtcars %>% 
  rename(prefix_mpg = mpg, prefix_cyl = cyl) %>% 
  mutate(newvar = rowSums(select(., starts_with("prefix_"))))

关于r - dplyr 在 mutate() 中使用 select() 助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50499860/

相关文章:

r - ggplot : adding color aesthetic changes stack order

r - `dist`中的 `st_buffer`参数默认设置为什么单位?

r 过滤器() 问题 : plotly vs ggplot

r - 如何将命名向量更改为保留名称的数据框?

r - dplyr::n 函数如何工作?

r - 使用 R data.table 计算所有变量组合和 df 的不同计数

将 ggplot 中的图例大小减小到超出默认大小

r - 在 R 中绘制 GAM : Setting custom x-axis limits?

r - 如何使用 r-script 从 Node 中的 R 脚本获取输出数据

r - 如何使用dplyr按id过滤数据框组中列的前10个百分点