r - 根据R中的列名将一组列除以另一组列
问题描述
我想根据列名中的共同内容将一组列除以另一组列。更具体地说,在下文中,dataframe
我想将带有prefix1的每一列与带有prefix2的相应列分开(即“prefix1 column1”与“prefix2 column1”,“prefix1 column2”与“prefix2 column2”等)。
dt <- data.frame(replicate(6,sample(1:15,10,rep=TRUE)))
colnames(dt) <- c("prefix1 column1","prefix1 column2","prefix1 column3","prefix2 column1","prefix2 column2","prefix2 column3")
View(dt)
理想的输出将是一个带有额外 3 列的数据框,其中包含除法结果。我的头脑一直在坚持这项任务 - 我会很感激任何建议。
解决方案
我们可以循环across
'prefix1' 列,将列名 ( cur_column()
) 中的子字符串 'prefix1' 替换为 'prefix2'、get
值和除法,通过更新.names
library(dplyr)
library(stringr)
dt <- dt %>%
mutate(across(starts_with('prefix1'), ~ ./get(str_replace(cur_column(),
'prefix1', 'prefix2')), .names = '{.col}_new'))
或使用base R
dt[paste0(names(dt)[1:3], "_new")] <- dt[1:3]/dt[4:6]
推荐阅读
- android - 如何修复错误程序类型已存在:android.support.v4.app.INotificationSideChannel
- android - 使用 Retrofit 的 HTTP 调用失败,而 Chrome 浏览器中的相同调用有效
- c# - c# Razor Pages Select Tag Helper
- html - 列出 ul 项目的行为很奇怪
- python - 将 vgg19 层的输出显示为图像
- odoo - 如何在odoo中使用过滤器搜索更改选择字段?[奥多 9]
- c# - 获取扫描仪 zebra se2707 的状态
- django - 如何使用 django 将日期保存到数据库中?
- r - 对 lmer 使用 emmeans
- date - 如何在 PSPP 中找到几个日期的最小值