这可能并不困难,但无法弄清楚如何以data.table方式进行制作。我需要一列C3,它等于组中第一行的C1 * C2加上当前行的C1 * C2。
这是一个例子:
library(data.table)
df = data.table( G = c(rep("G1", 3), rep("G2", 3)), Index = c(1:3, 1:3), C1 = 1:6, C2 = 4:9)
最终表应如下所示:
G Index C1 C2 C3
G1 1 1 4 NA
G1 2 2 5 14
G1 3 3 6 22
G2 1 4 7 NA
G2 2 5 8 68
G2 3 6 9 82
为简单起见:在C3中,索引== 1的值并不重要。
任何想法都非常感谢!
一个选项是
df[, C3 := c(NA, (C1 *C2)[-1]) + first(C1) * first(C2), G]
df
# G Index C1 C2 C3
#1: G1 1 1 4 NA
#2: G1 2 2 5 14
#3: G1 3 3 6 22
#4: G2 1 4 7 NA
#5: G2 2 5 8 68
#6: G2 3 6 9 82
或略紧凑
df[, C3 := {v1 <- C1 * C2; c(NA, (v1 + v1[1])[-1])}, G]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句