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

时间:2018-05-24 02:02:28

标签: r dplyr mutate

我要创建一个新变量,它代表许多其他变量的总和(或其他函数),这些变量都以"前缀_"开头。有没有办法使用这些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,但在我的实际情况中它是一长串的变量,太长了,不方便命名。

1 个答案:

答案 0 :(得分:5)

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

library(dplyr)

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