3

抱歉,如果这个问题已经得到回答,但所有信息。我已经能够找到与合并数据框本身或以不同方式合并有关。我真的很感激任何想法。

我有一个非常大但非常简单的数据框,大约。22500 行和 48 列。我想根据行名合并数据框中的一些行,并且想知道是否有任何方法可以做到这一点。

数据框的一部分如下所示:

                         Treatment1 Treatment2 Treatment3 Treatment4 Treatment5
    Nasvi2EG000001t1         28         43         33         25         64
    Nasvi2EG000002t2          0          3          0          0          4
    Nasvi2EG000002t5          0          0          0          0          0
    Nasvi2EG000002t6          0          0          0          0          0
    Nasvi2EG000004t1          1          0          0          0          0
    Nasvi2EG000009t1          0          4          2          0          4
    Nasvi2EG000013t1         21          8         17         19          7
    Nasvi2EG000014t1          0          3          0          0          4
    Nasvi2EG000014t2          0          4          0          0          3

如您所见,第 2、3 和 4 行的名称相同,直到“t”后面的数字和第 8 行和第 9 行相同。我想将名称相似的行合并在一起......

我想结束的是:

                     Treatment1 Treatment2 Treatment3 Treatment4 Treatment5
    Nasvi2EG000001t1         28         43         33         25         64
    Nasvi2EG000002            0          3          0          0          4
    Nasvi2EG000004t1          1          0          0          0          0
    Nasvi2EG000009t1          0          4          2          0          4
    Nasvi2EG000013t1         21          8         17         19          7
    Nasvi2EG000014            0          7          0          0          7

对已合并的行中的值求和。

将非常感谢任何想法。

谢谢!

4

1 回答 1

4

假设您data.frame的名称为“SODF”,请从 中创建一个向量,该向量从 的末尾去除“ row.namest + some digit”row.names并将其用作您的聚合变量。

> aggvar <- gsub("(t[0-9]+$)", "", rownames(SODF))
> aggregate(. ~ aggvar, SODF, sum)
          aggvar Treatment1 Treatment2 Treatment3 Treatment4 Treatment5
1 Nasvi2EG000001         28         43         33         25         64
2 Nasvi2EG000002          0          3          0          0          4
3 Nasvi2EG000004          1          0          0          0          0
4 Nasvi2EG000009          0          4          2          0          4
5 Nasvi2EG000013         21          8         17         19          7
6 Nasvi2EG000014          0          7          0          0          7
于 2013-03-08T15:32:30.847 回答