2015-09-28 17 views
6

data.table numaralı belgede bir sütunu saymak ve toplamak (toplamak) ve bunu yapmanın en etkili yolunu bulamadım. Bu benim istediğim şeye yakın görünüyor R summarizing multiple columns with data.table.Sütun saymak ve toplamak için data.table özelliğini kullanın

Benim veriler: ben saymak ve data.table kullanılarak MNTH tarafından VAR toplamak de istiyorum

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 

. İstenilen sonuç:

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

cevap

11

Eğer birkaç sütun bir toplama yöntemini uygulamak için nasıl bir yöntem vermek kastediyoruz sonrası. Farklı sütunlara farklı toplama yöntemleri uygulamak istiyorsanız, bunu yapabilirsiniz:

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

Ayrıca referans olarak sizin veri kümesi güncelleyerek mevcut veri kümesi için bu değerleri ekleyebilirsiniz:

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

bu sonuçlanır :

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

bu sonuçları içinde:

> 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 sözdizimini kullanma hakkında daha fazla bilgi için, bkz. Getting started guides

+0

Bu, data.table'ı öğrendiğim için son derece yararlı bilgilerdir - teşekkürler! – Whitebeard

İlgili konular