在 data.tables 上传播值

Spreading values on data.tables

我是 R 的新手,我想知道是否有用于传播的库,我的意思是,例如,如果我有这个 data.table:

DT <- data.table(V1 = c(1L,2L), V2 = LETTERS[1:4], V4 = 1:4)

我将 15 分配给 V4 列:

DT$V4 = 15

将调整这些值,使总和现在为 15:

DT <- data.table(V1 = c(1L,2L), V2 = LETTERS[1:4], V4 = c(1.5,3,4.5,6)).

(新值是乘以 15/sum(column) --> 15 / 10)

这是我必须做的最简单的例子,这就是我问是否有图书馆的原因。

您可以使用下面的方法计算要乘以的数15/10=1.5,然后乘以.I

DT <- data.table(V1 = c(1L,2L), V2 = LETTERS[1:4], V4 = 1:4)
DT$V4 = 15
DT[,V4:=.I*V4/sum(seq(.N))]

DT
# V1 V2  V4
# 1:  1  A 1.5
# 2:  2  B 3.0
# 3:  1  C 4.5
# 4:  2  D 6.0