1

我有一个这样的数据框(1000000 行):

A    B    C
a    0.2  4 
b    0.8  7
c    1    8
d    0.2  1
e    0.6  9

我想将 B 中的每个值乘以取自 C 的随机数(没有替换的排列),为每一行生成一个新值 x。然后我想对所有 x 值求和以获得新的行 y。重复此操作 n 次。我不需要数据框中的 xn 列,只需要一个带有 yn 值的向量。

我会得到这样的东西(2次迭代):

A    B    C    x1           x2        .... xn
a    0.2  4    0.2*1=0.2    0.2*4=0.8
b    0.8  7    0.8*8=6.4    0.8*9=0.72
c    1    8    1*7=7        1*1=1
d    0.2  1    0.2*9=1.8    0.2*7=1.4
e    0.6  9    0.6*4=2.4    0.6*8=4.8
y              17.8         8.72      .... yn
4

1 回答 1

1

在此处使用replicate帮助:

n <- 10
(y <- with(df, replicate(sum(B * sample(C)), n = n)))
# [1] 16.4 16.4 18.0 17.8 14.2 14.2 18.0 20.4 15.2 19.8

如果可以选择带放回抽样,则可以通过生成单个大的值矩阵C然后使用来加快速度colSums

于 2018-11-07T22:47:28.593 回答