2015-09-28 15 views
6

Voglio contare e aggregare (sommare) una colonna in un data.table e non ho trovato il modo più efficiente per farlo. Questo sembra essere vicino a quello che voglio R summarizing multiple columns with data.table.Usa data.table per contare e aggregare una colonna

I miei dati:

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 

voglio sia contare e sommare VAR da MNTH utilizzando data.table. Il risultato desiderato:

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

risposta

11

Il post a cui si fa riferimento per fornire un metodo su come applicare un metodo di aggregazione a più colonne. Se si desidera applicare diversi metodi di aggregazione di diverse colonne, si può fare:

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

questo si traduce in:

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

È inoltre possibile aggiungere questi valori per il set di dati esistente aggiornando il set di dati con riferimento :

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

questo si traduce in:

> 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 

Per ulteriori informazioni sull'uso della sintassi data.table, vedere Getting started guides

+0

Queste sono tutte informazioni estremamente utili man mano che imparo data.table - grazie! – Whitebeard

Problemi correlati