2013-04-02 46 views
3

我在想如何在data.frame上轉換aggregate以在data.table上工作。在R中,如何將data.frame的聚合轉換爲data.table的聚合?

例如,我有一個data.table稱爲mydt

Date  ,  Time , Value 
1899-01-01 , 4:00:00 , 1 
1899-01-01 , 4:01:00 , 2 
1899-01-01 , 4:02:00 , 3 
1899-01-01 , 4:03:00 , 4 
1899-01-01 , 4:04:00 , 5 
1900-08-22 , 22:00:00 , 101 
1900-08-22 , 22:01:00 , 102 
2013-08-29 , 4:00:00 , 1000 
2013-02-29 , 4:02:00 , 1001 
2013-02-29 , 4:03:00 , 1002 

我想組由Date產生在以下格式的data.table

Date  , Vector(variable length) 
1899-02-28, c(1,2,3,4,5) 
1900-08-22, c(101,102) 
1900-08-22, c(1000,1001,1002) 

如果我處理一個data.frame,正確的命令是:

temp <- aggregate(Value ~ Date, mydt, as.vector) 

如果我正在處理data.table,等效命令是什麼?

回答

5

Date分組,並在list內使用list(Value)以獲得列表結果。

dt[, list(Value=list(Value)), by=Date] 

#   Date  Value 
# 1: 1899-01-01 1,2,3,4,5 
# 2: 1900-08-22 101,102 
# 3: 2013-08-29  1000 
# 4: 2013-02-29 1001,1002 
+1

這個工作絕對完美。真的非常感謝你!! – Contango