1

我是 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)

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

4

1 回答 1

1

您可以使用下面来计算要相乘的数字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
于 2017-05-08T13:47:46.270 回答