R. Вычислить произведение значения в строке на переставленное значение другого столбца n раз - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть такой фрейм данных (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 для каждой строки. Затем я хочу суммировать все значения х, получая новую строку у. Повторите это 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

1 Ответ

0 голосов
/ 08 ноября 2018

Использование 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.

...