首页 文章

在条件上聚合data.table但添加列

提问于
浏览
0

我在R中有一个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

对于其他年/月,ITEM-COUNTRY也有相同的组合数据;我有2014年1月至2015年12月的数据,所以24个月 . 可能并非所有项目/国家都拥有所有积分的数据,即有些只有19个月等 .

我知道如何在整个期间汇总数量:

agg = t[,list("TOT Q"=sum(QUANTITY)),by='ITEM,COUNTRY']

但是,现在我想要这样的东西:

项目 - 国家 - 问题1-2014 - 问题2-2014 - .... - 问题12-2015

如果没有特定项目/国家/地区的数据,则Q应该为零,否则它应该是年份和月份的相应行中的数据 . 即我想汇总项目和国家/地区,但是,保留所有数量并将它们放在不同的列中 .

编辑:

尝试了Jaap的评论,它首先不起作用 . 但我解决了它 . 我得到0和1作为输出和一个错过聚合函数的警告 . 搜索此警告我发现stackoverflow.com/questions/30463591 / ...解决了我的问题 . 正如我所说,我有更多变量,所以对于某些项目/国家/月/年组合我有重复,因为它们在其他变量上不同,所以我需要一个聚合函数(总和) .

我现在用的是:

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

1 回答

  • 1

    尝试了Jaap的评论,它首先不起作用 . 但我解决了它 . 我得到0和1作为输出和一个错过聚合函数的警告 . 搜索此警告我发现stackoverflow.com/questions/30463591 / ...解决了我的问题 . 正如我所说,我有更多变量,所以对于某些项目/国家/月/年组合我有重复,因为它们在其他变量上不同,所以我需要一个聚合函数(总和) .

    我现在用的是:

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

相关问题