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

あなたが「SODF」と呼ばれていると仮定して、の末尾から「t + data.framesomedigit」を取り除くベクトルをから作成し、それを集計変数として使用します。row.namesrow.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 に答える