我要创建一个新变量,它代表许多其他变量的总和(或其他函数),这些变量都以"前缀_"开头。有没有办法使用这些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,但在我的实际情况中它是一长串的变量,太长了,不方便命名。
答案 0 :(得分:5)
我们可以将starts_with
与select
调用一起使用,并将其放入rowSums
函数中。 .
是一种从上一个管道操作的输出中指定对象的方法。
library(dplyr)
mtcars %>%
rename(prefix_mpg = mpg, prefix_cyl = cyl) %>%
mutate(newvar = rowSums(select(., starts_with("prefix_"))))