r - 如何对 R 中的列求和,其中要求和的列在单独的数据框中定义
问题描述
我需要对数据框中的列求和,其中需要求和的列在单独的数据框中定义。下面的可重现示例。
dataset <- tibble(L1 = runif(100, 0, 1),
L2 = runif(100, 0, 1),
L3 = runif(100, 0, 1),
L4 = runif(100, 0, 1))
cols_to_sum <- tibble(col1 = c("L1","L2"),
col2 = c("L3","L4"))
在上面的示例中,我需要在数据集中创建两个额外的列,一个称为“L1L3”,它是 L1 和 L3 的总和,L2 和 L4 类似。所需的输出应类似于下面的数据框。cols_to_sum 数据框可以有任意数量的行,而数据集可以有任意数量的列。
dataset <- tibble(L1 = runif(100, 0, 1),
L2 = runif(100, 0, 1),
L3 = runif(100, 0, 1),
L4 = runif(100, 0, 1)) %>%
mutate(L1L3 = L1 + L3,
L2L4 = L2 + L4)
解决方案
一个选项涉及dplyr
并且purrr
可能是:
map_dfc(.x = asplit(cols_to_sum, 1), ~ dataset %>%
mutate(!!paste(paste(.x, collapse = "_"), "sum", sep = "_") := rowSums(select(., .x))) %>%
select(ends_with("sum"))) %>%
bind_cols(dataset)
L1_L3_sum L2_L4_sum L1 L2 L3 L4
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1.42 1.79 0.621 0.878 0.802 0.908
2 0.944 1.39 0.135 0.527 0.809 0.864
3 1.16 0.859 0.607 0.361 0.555 0.498
4 1.71 1.10 0.982 0.853 0.729 0.252
5 0.856 0.950 0.287 0.0234 0.568 0.927
6 0.235 1.16 0.00368 0.363 0.232 0.801
7 1.27 1.24 0.516 0.601 0.755 0.637
8 1.37 1.38 0.486 0.914 0.882 0.465
9 0.368 1.12 0.168 0.642 0.200 0.482
10 0.341 1.33 0.317 0.477 0.0240 0.857
推荐阅读
- git - 通过本地 git 合并到稳定分支的最佳方法
- javascript - 在 JSON 中更改数据格式的更好方法(正则表达式?!)
- python - 使用或不带参数调用方法?
- javascript - React - 在父状态更改时更新子级,而不使用 componentWillReceiveProps()?
- r - How to find rows IDs that a value exists in any of column in R and then put Exists to a new dataframe
- swift - 如何创建一个不影响原始的新xcode项目副本?
- c# - 如何在 Unity C# 中添加两个四元数
- powershell - Powershell 意外行为
- html - 缩放 SVG 图像,最大限度地节省质量
- javascript - 如何从 reactjs 的另一个模块导出状态