23

1つのキーと約100の数値行を持つdata.tableがあり、そのうちの1つがキーに設定されています。キーでグループ化された、各数値行の合計を含む新しい変数を作成したいと思います。

たとえば、現在の私のデータは

ID Count1 Count2 Count3
1   1      3      0
1   3      3      3
2   1      2      1
3   1      1      2

私が欲しいのは:

ID Count1 Count2 Count3
1   4      6      3
2   1      2      1
3   1      1      2

私はこれを取得するために非常に多くの方法を試しました。私は私ができることを知っています:

Y <- X[, list(Count=sum(Count1), Count2=sum(Count2), Count3=sum(Count3), by = ID]

ただし、私には何百もの変数があり、それらの名前はリストにのみ表示されます。これをどのように処理すればよいですか?

どうもありがとうございました。

テストデータを生成するコードは次のとおりです。

ID <-c(rep(210, 9), rep(3917,6))
Count1 <- c(1,1,0,1,3,1,4,1,1,1,1,1,1,0,1)
Count2 <- c(1,0,0,1,0,1,0,1,1,1,1,1,1,0,1)
Count3 <- c(1,0,0,1,0,1,0,1,1,1,1,1,1,0,1)
x <- data.table(ID, Count1, Count2, Count3)
setkey(x, ID)
4

2 に答える 2

27

テスト データは、指定した例と一致しませんが、 「データのサブセット」data.table()という名前の演算子があるという事実を利用でき.SDます。したがって、これは機能するはずです。

x[, lapply(.SD, sum), by = ID]
#----
     ID Count Count2 Count3
1:  210    13      5      5
2: 3917     5      5      5

これは実際には FAQ に記載されています: type vignette("datatable-faq", package="data.table")or find it online .

于 2012-12-02T06:07:46.443 に答える
11

data.table は data.frame であるため、これには集計を使用できます。

> aggregate(. ~ ID, data=x, FUN=sum)
    ID Count1 Count2 Count3
1  210     13      5      5
2 3917      5      5      5
于 2012-12-02T06:58:23.460 に答える