2015-09-28 9 views
6

data.tableの列を集計して集計(合計)し、最も効率的な方法を見つけることができませんでした。これは私が望むものに近いと思われるR summarizing multiple columns with data.tabledata.tableを使用して列を数えて集計する

マイデータ:

set.seed(321) 
dat <- data.table(MNTH = c(rep(201501, 4), rep(201502, 3), rep(201503, 5), 
          rep(201504, 4)), 
    VAR = sample(c(0,1), 16, replace=T)) 

> dat 
    MNTH VAR 
1: 201501 1 
2: 201501 1 
3: 201501 0 
4: 201501 0 
5: 201502 0 
6: 201502 0 
7: 201502 0 
8: 201503 0 
9: 201503 0 
10: 201503 1 
11: 201503 1 
12: 201503 0 
13: 201504 1 
14: 201504 0 
15: 201504 1 
16: 201504 0 

私はdata.table使っMNTHVARをカウントし、合計する両方たいです。望ましい結果:あなたは、いくつかの列に1つの集計方法を適用する方法についての方法を与えることを参照している

MNTH COUNT VAR 
1 201501  4 2 
2 201502  3 0 
3 201503  5 2 
4 201504  4 2 

答えて

11

ポスト。あなたが別の列に異なる集計方法を適用したい場合は、あなたが行うことができます:あなたはまた、参照することによって、あなたのデータセットを更新することにより、既存のデータセットにこれらの値を追加することができます

 MNTH count var 
1: 201501  4 2 
2: 201502  3 0 
3: 201503  5 2 
4: 201504  4 2 

dat[, .(count=.N, var=sum(VAR)), by = MNTH] 

を、これは、その結果:

dat[, `:=` (count=.N, var=sum(VAR)), by = MNTH] 

これは、その結果:

> dat 
     MNTH VAR count var 
1: 201501 1  4 2 
2: 201501 1  4 2 
3: 201501 0  4 2 
4: 201501 0  4 2 
5: 201502 0  3 0 
6: 201502 0  3 0 
7: 201502 0  3 0 
8: 201503 0  5 2 
9: 201503 0  5 2 
10: 201503 1  5 2 
11: 201503 1  5 2 
12: 201503 0  5 2 
13: 201504 1  4 2 
14: 201504 0  4 2 
15: 201504 1  4 2 
16: 201504 0  4 2 
構文を使用する方法について、さらに読書のために

、私はdata.table学ぶように、これはすべての非常に有用な情報であるGetting started guides

+0

を参照してください - あなたに感謝! – Whitebeard

関連する問題