如何在 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
我有这个数据集:
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