如何将第一行的列值相乘添加到组中的所有其他行?

时间:2019-06-06 15:52:54

标签: r data.table

这可能并不困难,但无法弄清楚如何以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中的值无关紧要。

任何想法都值得赞赏!

1 个答案:

答案 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]