r - 在 R 中使用带有 mutate 的循环对具有部分匹配列名的列求和

标签 r loops dplyr names

df <- data.frame(x_1_jr=c(1,2,3,4), x_2_jr=c(1,2,3,4), y_1_jr=c(4,3,2,1), y_2_jr=c(4,3,2,1)

  x_1_jr x_2_jr y_1_jr y_2_jr
1      1      1      4      4
2      2      2      3      3
3      3      3      2      2
4      4      4      1      1

我正在尝试生成新变量,它们是具有相同列名后缀的 x 和 y 之和,即

df <- df %>% mutate(z_1_jr= x_1_jr + y_1_jr)

  x_1_jr x_2_jr y_1_jr y_2_jr z_1_jr
1      1      1      4      4      5
2      2      2      3      3      5
3      3      3      2      2      5
4      4      4      1      1      5

我可以为每个变量组合写出这个,但是我有大量变量(每个 x 和 y 组 > 50),并且想使用循环...但是,我对R 并且不确定从哪里开始!

有人可以帮忙吗?谢谢!

编辑:为了更清楚起见,数据集包含其他非数字变量。有 >700 列(来自大型调查)。例如x_1_jr代表1岁男性个体的个数,y_1_jr代表1岁女性个体的个数。我正在尝试获得每个年龄组的总数(男性加上 1 岁的女性)。

一个

最佳答案

带有 base R 的选项

df[c("z_1_jr", "z_2_jr")] <- sapply(split.default(df, 
      sub("^[a-z]+_", "", names(df))), rowSums)
df
#  x_1_jr x_2_jr y_1_jr y_2_jr z_1_jr z_2_jr
#1      1      1      4      4      5      5
#2      2      2      3      3      5      5
#3      3      3      2      2      5      5
#4      4      4      1      1      5      5

关于r - 在 R 中使用带有 mutate 的循环对具有部分匹配列名的列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62024637/

相关文章:

r - 使用 dplyr 在 R 中使用 group_by 生成唯一/随机序列号

r - 对数据框中的列进行排序

r - 列表列上的 purrr pmap 和几个向量

java - 将数组列表的实例转换为另一个实例

linux - 在 bash 中循环遍历文件中的行,而不使用标准输入

performance - 提高性能/速度

r - 使用 dplyr 到 group_by 并按组有条件地改变数据帧

r - 使用 dplyr::filter 问题创建 R 函数

r - dplyr + group_by 并避免按字母顺序排序

r - 使用嵌套标题的汇总表