2015-09-28 14 views
6

Tôi muốn đếm và tổng hợp (tổng) một cột trong một data.table và không thể tìm thấy cách hiệu quả nhất để thực hiện việc này. Điều này dường như gần với những gì tôi muốn R summarizing multiple columns with data.table.Sử dụng dữ liệu.table để đếm và tổng hợp một cột

dữ liệu của tôi:

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 

Tôi muốn cả hai đếm và tổng hợp VAR bởi MNTH sử dụng data.table. Kết quả mong muốn:

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

Trả lời

11

Bài đăng bạn đang đề cập đến phương pháp áp dụng một phương pháp tổng hợp cho một số cột. Nếu bạn muốn áp dụng phương pháp tập hợp khác nhau để các cột khác nhau, bạn có thể làm:

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

này dẫn đến:

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

Bạn cũng có thể thêm các giá trị cho bộ dữ liệu hiện tại của bạn bằng cách cập nhật dữ liệu của bạn bằng cách tham khảo :

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

kết quả này trong:

> 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 

Để đọc thêm về cách sử dụng cú pháp data.table, hãy xem Getting started guides

+0

Đây là tất cả thông tin cực kỳ hữu ích khi tôi tìm hiểu data.table - cảm ơn bạn! – Whitebeard

Các vấn đề liên quan