r - dplyr 在 mutate() 中使用 select() 助手
问题描述
我要创建一个新变量,它代表许多其他变量的总和(或其他函数),这些变量都以“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,但在我的实际情况下,它是一长串变量,太长而无法方便地命名。
解决方案
我们可以starts_with
与select
调用一起使用并将它们放入rowSums
函数中。.
是一种从上一个管道操作的输出中指定对象的方法。
library(dplyr)
mtcars %>%
rename(prefix_mpg = mpg, prefix_cyl = cyl) %>%
mutate(newvar = rowSums(select(., starts_with("prefix_"))))
推荐阅读
- python - 我需要能够访问 Django 管理页面吗?
- javascript - 在反应中下载文件,通过快递发送
- c# - 在 C# 中通过 SMTP 服务器发送电子邮件时无法访问文件
- sql-server - SQL 在 WHERE 子句中使用 COUNT()
- r - ggplot2 图中的白线伪影
- c# - 如何修复或防止 - 外部服务交互 (HTTP)
- amazon-web-services - 可以从 CDK 步骤函数 TS 文件生成 Amazon 状态语言 json 文件吗
- .net-core - .Net Core:存储配置数据的位置,这些数据应该可供各种应用程序使用
- symfony - 如何将密钥添加到 Symfony 配置并解决“无法识别的选项”问题?
- apache - 无法连接到 LAN 上的 Apache 服务器