dplyr在mutate()中使用select()帮助器

los*_*ost 3 r dplyr mutate

我将创建一个新变量,它表示许多其他变量的总和(或其他函数),这些变量都以"prefix_"开头.有没有办法使用这些select()助手(例如starts_with())整齐地做到这一点?

我不认为 mutate_at()适用于此,因为我只是试图基于许多现有变量创建一个新变量.

我的尝试:

df %<>%
  mutate(newvar = sum(vars(starts_with("prefix_"))))
Run Code Online (Sandbox Code Playgroud)

这当然不起作用.非常感谢!

一个可重复的例子:

mtcars %<>% 
  rename("prefix_mpg" = mpg) %>% 
  rename("prefix_cyl" = cyl) %>% 
  mutate(newvar = sum(var(starts_with("prefix_"))))
Run Code Online (Sandbox Code Playgroud)

预期输出将是mtcars $ newvar,它是prefix_mpg和prefix_cyl的总和.当然我可以只明确命名mpg和cyl,但在我的实际情况中它是一个很长的变量列表,太长了,不方便命名.

www*_*www 5

我们可以使用starts_withselect呼叫并把它们放在rowSums功能..是一种从上一个管道操作的输出中指定对象的方法.

library(dplyr)

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