我将创建一个新变量,它表示许多其他变量的总和(或其他函数),这些变量都以"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,但在我的实际情况中它是一个很长的变量列表,太长了,不方便命名.
我们可以使用starts_with与select呼叫并把它们放在rowSums功能..是一种从上一个管道操作的输出中指定对象的方法.
library(dplyr)
mtcars %>%
rename(prefix_mpg = mpg, prefix_cyl = cyl) %>%
mutate(newvar = rowSums(select(., starts_with("prefix_"))))
Run Code Online (Sandbox Code Playgroud)