如何在 R 中使用 for 循环在列内求和

How to sum within columns using a for cycle in R

我有这个数据集:

        V1  V2  V3  V4  SN
[1]     a   t1  Q1  1   001
[2]     a   t1  Q2  2   001
[3]     a   t1  Q1  3   002
[4]     a   t1  Q2  4   002
[5]     a   t2  Q1  5   003
[6]     a   t2  Q2  6   003
[7]     b   t1  Q1  7   004
[8]     b   t3  Q1  8   005
[9]     b   t3  Q2  9   005
...     ..  ..  ..    ..

V1 是客户,V2 是产品类型,V3 是季度,V4 是经济价值 variable.SN 是序列号,每个产品都是唯一的,因为它们彼此不同.

我想创建一个新的 table,其中包含:

      V1    V2       V5   V6  V7
[1]   a     t1  1+2+3+4   2    2
[2]   a     t2      5+6   1    2     
[3]   b     t1        7   1    1
[4]   b     t3      8+9   1    2
...    ..    ...    ...   ..   ..

其中 V5 是 V4 中包含的值的总和(我想要 10,而不是 1+2+3+4); V6为同一客户拥有的同一产品的数量; V7 是报告了多少个季度。

所以基本上我希望 V4 中包含的值的总和按客户和产品类型分组。

想过for或者tapply循环,但是不知道怎么用R写。

或者,我想确定具有相同 V1 和相同 V2 的行,然后将所有其他变量加在一起。

这是一个可能的 data.table 解决方案(如果您使用的是开发版本,则可以使用 uniqueN() 而不是 length(unique())

library(data.table)
setDT(data)[, .(V5 = sum(V4), 
                V6 = length(unique(SN)),
                V7 = length(unique(V3))),
             by = .(V1, V2)]

#    V1 V2 V5 V6 V7
# 1:  a t1 10  2  2
# 2:  a t2 11  1  2
# 3:  b t1  7  1  1
# 4:  b t3 17  1  2