总结data.table但添加列

问题描述:

我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作为输出,并警告缺少一个聚合函数。搜索这个警告我发现*.com/questions/30463591/...它解决了我的问题。正如我所说,我有更多的变量,所以对于某些项目/国家/月/年组合,我有重复,因为它们与其他变量不同,所以我需要一个聚合函数(总和)。

我现在用的是什么:

dcast(t, ITEM + COUNTRY ~ MONTH + YEAR, value.var="QUANTITY", fun.aggregate=sum) 
+1

像'dcast(T,ITEM + COUNTRY〜paste0( 'M',MONTH, '_',年)),lapply(.SD,总之, na.rm = TRUE),by =。(ITEM,COUNTRY)]'? – Jaap

+0

我正在尝试,但到目前为止不起作用。另外,在数量之后,我在数据框中有更多变量。所以现在不使用正确的变量。此外,这是否立即把正确的价值在正确的列?比如年份和月份是否匹配? –

+0

我解决了它。我得到0和1作为输出,并警告缺少一个聚合函数。搜索此警告我发现https://*.com/questions/30463591/r-reshape2-aggregation-function-missing-defaulting-to-length它解决了我的问题。正如我所说,我有更多的变量,所以对于某些项目/国家/月/年组合,我有重复,因为它们与其他变量不同,所以我需要一个聚合函数(总和)。 –

试过夏侯的评论,这不是DIT摆在首位的工作。但我解决了它。我得到0和1作为输出,并警告缺少一个聚合函数。搜索这个警告我发现*.com/questions/30463591/...它解决了我的问题。正如我所说,我有更多的变量,所以对于某些项目/国家/月/年组合,我有重复,因为它们与其他变量不同,所以我需要一个聚合函数(总和)。

我现在用的是什么:

dcast(t, ITEM + COUNTRY ~ MONTH + YEAR, value.var="QUANTITY", fun.aggregate=sum)