2013-10-08 26 views
0

我有表格的数据如何汇总数据以用于R中的热图中?

Site,Year,Month,Count,Action 
Site A,2012,1,10,Action A 
Site A,2012,2,9,Action A 
Site A,2013,1,12,Action A 
Site A,2013,2,3,Action A 
Site B,2012,1,6,Action A 
Site B,2013,1,2,Action A 
Site A,2012,1,3,Action B 
Site A,2013,1,2,Action B 
Site B,2012,1,20,Action B 
Site B,2013,1,12,Action B 
... 

然后从那里,我想申请一个功能f(x,y)产生可通过网站,年,月,和行动表给定月份:

Site,f,Action 
Site A,f(10,12),Action A 
Site A,f(3,2),Action B 
... 

如果输入到f(x,y)将是x等于2012年的计数,第1个月按网站,年份和操作计算,y将按网站,年份和操作计算2013年第1个月。

我希望能够在R中为任何给定的月份生成这样的表/矩阵。

这是为了准备将这些数据提供给heatmap以逐月显示年比变化。

回答

2

data.table提供了简单的语法:

library(data.table) 
dt = data.table(df) 
dt[,list(f = f(Count[Year==2012], Count[Year==2013])), by=list(Site, Action, Month)] 
+0

'aggregate'是一个很好的基础R功能,虽然子集化函数中今年可能会麻烦? –

+0

我试过这个,我得到一个错误消息'负长度矢量不允许'。有任何想法吗? – drsnyder

+0

用data.table清理! +1 – Henrik