2012-12-17 28 views
7

Tôi đang cố gắng sử dụng data.table trong R để tóm tắt các bảng dữ liệu sau:Tóm tắt dựa trên hai biến nhóm R sử dụng data.table

SiteNo Var1 Var2 Var3 ... Var18 Group 
1  0.1 0.3 1   0.3  1 
2  0.3 0.1 0.9  0.2  1 
etc. 

Có 668.944 quan sát, 43 trang, 3 nhóm, và 19 biến. Tôi muốn nhận được kết quả của một hàm (ví dụ: mean) tóm tắt từng cột/biến theo cả trang web và nhóm. Vì vậy, phải có 43 trang web x 3 nhóm x # số liệu thống kê tóm tắt (ví dụ: mean). Tôi đã sử dụng mã sau:

e.dt<-data.table(e) 
setkey(e.dt, Group) # set key to group number 

# get mean for each column/variable 
e.dt.mean<-e.dt[,lapply(.SD,mean), by="SiteNo"] 

Sử dụng ở trên, tôi nhận được 43 trang web, chứ không phải 3 nhóm tôi đã theo dõi. Tôi có thể chia bảng dữ liệu gốc thành ba nhóm, nhưng đã tự hỏi liệu có cách nào tóm tắt bằng cách sử dụng hai biến (SiteNo và Group) không bằng cách sử dụng data.table.

Tôi vẫn là RTM trên data.table, nhưng cho đến nay tôi vẫn chưa tìm thấy câu trả lời ở trên.

Trả lời

11

Hãy thử đặt chìa khóa của bạn để cả hai "Tập đoàn" và "SiteNo":

Từ ví dụ dưới ?key:

keycols <- c("SiteNo", "Group") 
setkeyv(e.dt, keycols) 

Sau đó, sử by như:

e.dt[, lapply(.SD,mean), by = key(e.dt)] 

Ngoài ra, bạn có thể sử dụng:

e.dt[, lapply(.SD,mean), by = "SiteNo,Group"] 

hoặc

e.dt[, lapply(.SD, mean), by = list(SiteNo, Group)] 
Các vấn đề liên quan