通过对变量进行分组将列添加到不规则的数组矩阵中

时间:2013-09-04 04:35:43

标签: r matrix indexing sum apply

在R:

我不确定这个问题的正确标题是什么,所以也许有人可以帮助我。这将不胜感激。如果这被称为易于搜索的东西,我很抱歉。

所以我有一个参差不齐的数组矩阵(多个UPCS)

     [upc]    [quantity]          [day]    [daysum]
[1]  123         11                 1         NA     
[2]  123          2                 1         NA 
[3]  789          5                 1         NA 
[4]  456         10                 2         NA 
[5]  789          6                 2         NA 

我希望UPC每天对矩阵求和,例如:

    [upc]    [quantity]          [day]    [daysum]
[1]  123         11                 1         13
[2]  123          2                 1         13
[3]  789          5                 1         5
[4]  456         10                 2         10
[5]  789          6                 2         6

感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:1)

你还没有描述“干净矩阵”应该发生什么,但是从你的较大矩阵中创建一个“列”的代码适合在行对齐的基础上绑定它很简单:

 B <- cbind(B, daysum=ave(B[, 'quantity'],   # analysis variable
                          B[, 'upc'], B[ , 'day'], # strata variables
                          FUN=sum)  )     # function applied in strata

这当然假设B确实具有所示的列名。如果它实际上是一个数据帧,也应该工作,虽然输出并不表明你实际上还有R对象。 ave函数将为具有相同分层变量的所有行复制sum