以下是我的示例输入数据集:

 df <- data.frame(qw1_A_B_ = c(2, 4, 6, 8, 10),   
                  qw2_A_B_ = c(3, 6, 9, 12, 15),   
                  qw1_C_D_ = c(5, 10, 15, 20, 25),   
                  qw2_C_D_ = c(7, 14, 21, 28, 35))

我想详细说明通用正则表达式,以求和共享QW1和QW1且列名的变量部分相互匹配的每一对行.我应该得到的最终结果是:

data.frame(qw1qw2_A_B_ = c(5, 10, 15, 20, 25),   
           qw1qw2_A_B_ = c(12, 24, 36, 4, 60))

通过使用该向量,我刚刚得出了以下通用正则表达式:

vector <- c("qw1_A_B_", "qw2_A_B_", "qw1_C_D_", "qw2_C_D_")
vector <- gsub("^qw[12]_(.*)_$", "qw1qw2_\\1", vector)

但这远远不是想要的输出.

推荐答案

您可以try 下面的代码

do.call(
    cbind,
    lapply(
        split.default(df, sub(".*?_", "", names(df))),
        \(x)
        setNames(
            data.frame(rowSums(x)),
            paste0(
                paste0(sub("_.*", "", names(x)), collapse = ""),
                sub(".*?_", "_", names(x))[1]
            )
        )
    )
)

这给了我们

  qw1qw2_A_B_ qw1qw2_C_D_
1           5          12
2          10          24
3          15          36
4          20          48
5          25          60

R相关问答推荐

使用tidyverse / Mutate的存款账户余额

如何将移除事件分配给动态创建的按钮?

在for循环中转换rabrame

在R中使用数据集名称

如何在R中对深度嵌套的tibbles中的非空连续行求和?

在连续尺度上转置标签[瀑布图,R]

如何根据嵌套元素的名称高效而优雅地确定它属于哪个列表?

合并DFS列表并将索引提取为新列

如何在R forestplot中为多条垂直线分配唯一的 colored颜色 ?

识别连接的子网(R-igraph)

为左表中的所有行使用值Fill滚动左连接

R+reprex:在呈现R标记文件时创建可重现的示例

手动指定从相同数据创建的叠加图的 colored颜色

优化从每个面的栅格中提取值

按组内中位数分类

删除字符串R中的重复项

为什么函数toTitleCase不能处理english(1),而toupper可以?

使用函数从R中的列中删除标高

以R表示的NaN值的IS.NA状态

通过比较来自多个数据框的值和R中的条件来添加新列