我有一个这样的数据框(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
答案 0 :(得分: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
来使其更快。