2015-09-28 12 views
6

Chcę liczyć i agregować (sumować) kolumnę w data.table i nie mogę znaleźć najbardziej wydajnego sposobu na zrobienie tego. Wydaje się być blisko tego, co chcę R summarizing multiple columns with data.table.Użyj danych.table do zliczania i agregowania kolumn

Moje dane:

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 

Chcę zarówno liczyć i podsumować VAR przez MNTH użyciu data.table. Żądany wynik:

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

Odpowiedz

11

Wpis, do którego się odnosisz, podaje metodę stosowania jednej metody agregacji w kilku kolumnach. Jeśli chcesz zastosować różne metody agregacji do różnych kolumn, można zrobić:

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

skutkuje:

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

Można także dodać te wartości do istniejącego zbioru danych przez aktualizację zbioru danych poprzez odniesienie :

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

wynika to z:

> 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 

Dla dalszego czytania na temat korzystania z data.table składni, zobacz Getting started guides

+0

To wszystko jest niezwykle pomocne informacje jak nauczyć data.table - dziękujemy! – Whitebeard

Powiązane problemy