我R中,看起來像有data.table如下:總結data.table但添加列
> head(t)
ITEM COUNTRY YEAR MONTH QUANTITY
1: 1 1 2014 1 2
2: 1 2 2014 1 133
3: 2 3 2014 1 2
4: 3 4 2014 1 20
5: 3 2 2014 1 142
6: 4 4 2014 1 5
沒有爲項目國相同的組合數據也爲其他年/月;我有2014年1月至2015年12月的數據,因此爲24個月。它可能是,並非所有的項目/國家對所有點的數據,即有的只有19個月等
我知道如何在整個時期內聚集數量:
agg = t[,list("TOT Q"=sum(QUANTITY)),by='ITEM,COUNTRY']
不過,現在我想是這樣的:
項目 - 國家 - Q 1-2014 - Q 2-2014 - .... - Q 12-2015
如果沒有數據爲某個特定項目/國家, Q應該是零,否則它應該是年份和月份相應行中的數據第n個。即我想彙總項目和國家,但是,保留所有的數量,並把它們放在不同的欄目中。
編輯:
試過夏侯的評論,這不是DIT擺在首位的工作。但我解決了它。我得到0和1作爲輸出,並警告缺少一個聚合函數。搜索這個警告我發現stackoverflow.com/questions/30463591/...它解決了我的問題。正如我所說,我有更多的變量,所以對於某些項目/國家/月/年組合,我有重複,因爲它們與其他變量不同,所以我需要一個聚合函數(總和)。
我現在用的是什麼:
dcast(t, ITEM + COUNTRY ~ MONTH + YEAR, value.var="QUANTITY", fun.aggregate=sum)
像'dcast(T,ITEM + COUNTRY〜paste0( 'M',MONTH, '_',年)),lapply(.SD,總之, na.rm = TRUE),by =。(ITEM,COUNTRY)]'? – Jaap
我正在嘗試,但到目前爲止不起作用。另外,在數量之後,我在數據框中有更多變量。所以現在不使用正確的變量。此外,這是否立即把正確的價值在正確的列?比如年份和月份是否匹配? –
我解決了它。我得到0和1作爲輸出,並警告缺少一個聚合函數。搜索此警告我發現https://stackoverflow.com/questions/30463591/r-reshape2-aggregation-function-missing-defaulting-to-length它解決了我的問題。正如我所說,我有更多的變量,所以對於某些項目/國家/月/年組合,我有重複,因爲它們與其他變量不同,所以我需要一個聚合函數(總和)。 –