0

最初の 2 列の値に従って、データ フレームの列を合計する関数を作成しようとしています。たとえば、行列 M があります。

Crs gr  P_7 P_8      
38  1   3   16
38  1   12  45
38  1   9   28
40  2   3   9
40  2   14  29
40  1   4   3
40  2   8   2

最初に column1(crs) に従って列を合計し、次に column2(gr) に従って列を合計します。結果は、

    Crs gr  P_7  P_8      
    38  1   24  89
    40  2   25  40
    40  1   4   3

現在、私が使用している、

M <- M[, list(sum(P_7),sum(P_8)), by=list(Crs,gr)]

しかし、これに関する問題は、修正されない列の名前を定義する必要があることです。そのため、列の名前を定義せずにこれを行うにはどうすればよいか疑問に思っていました。前もって感謝します!

4

2 に答える 2

5

あなたはこれを探しています:

M[, lapply(.SD, sum), by = list(Crs, gr)]
于 2013-07-01T15:08:31.497 に答える
5

パッケージplyrには、まさにこのような状況のための魔法があります。次のようにddplyと を組み合わせて使用​​します。numcolwise

library(plyr)
ddply(dat, .(Crs, gr), numcolwise(sum))

結果:

  Crs gr P_7 P_8
1  38  1  24  89
2  40  1   4   3
3  40  2  25  40
于 2013-07-01T15:04:09.130 に答える