这可能并不困难,但无法弄清楚如何以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
为简单起见:索引== 1的C3中的值无关紧要。
任何想法都值得赞赏!
答案 0 :(得分: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]