首页 > 解决方案 > 具有相同名称但不同的两个匹配列的行平均值:'_1' 和 '_2'

问题描述

可以说我有数据框:

z = data.frame(col_1 = c(1,2,3,4), col_2 = c(3,4,5,6))

  col_1 col_2
1     1     3
2     2     4
3     3     5
4     4     6

我想取同名的列,只是数字不同,例如“_1”和“_2”,并取成对平均值。实际上,我有一个包含许多对的大数据框,它们的顺序不是很好,因此寻找一个可以应用于此的聪明解决方案。

所以输出应该是这样的:

  col
1   2
2   3
3   4
4   5

列名与列对相同,但删除了附加标签。

任何帮助都会非常感谢。

标签: r

解决方案


这是使用list2DF+ split.default+的基本 R 选项rowMeans

list2DF(lapply(split.default(z,gsub("_\\d+","",names(z))),rowMeans))

这使

  col
1   2
2   3
3   4
4   5

推荐阅读