2016-07-10 3 views
-1

У меня есть несколько наборов данных (короткие примеры ниже)Weighted отставал расчет в R

> print(partOne) 
[1] 0.010966943 -0.006819522 -0.007189830 0.039736714 0.002013070 
[6] -0.043946666 0.003808415 0.199010991 -0.094001478 -0.053006526 
[11] -0.051489992 0.019122283 -0.011215761 0.057408738 -0.020809564 
[16] -0.041295915 0.010134001 -0.011398076 
> print(part2) 
[1] 0.13070012 0.15793754 0.06980192 0.13270089 0.11384798 0.24417631 
[7] 0.10363273 0.09182783 0.12217490 0.47649356 0.33660955 0.23079863 
[13] 0.21581061 0.13967763 0.05988797 0.28255164 0.16277804 0.12716975 
[19] 0.19299641 0.21452418 

мне нужно взвесить каждый значение partOne текущим part2 значение, деленное на сумму N предыдущего part2 значения.

Таким образом, в течение короткого примера выше (который имеет 20 значений в каждом массиве), псевдо-код будет:

  1. Перейти к пункту N + 1 (например, предположим, N = 10 в этом примере)
  2. Вычислить (partOne [11] * partTwo [11])/сумма (partTwo [1-> 10])
  3. Приращение +1
  4. Вычислить (partOne [12] * partTwo [12])/сумма (partTwo [2-> 11])
  5. и т. д.
+0

Попробуйте оставить [воспроизводимая] (http://stackoverflow.com/questions/5963269/how-to-make-a- пример с большим r-воспроизводимым примером). – user2100721

ответ

2

Попробуйте эту

x[11:20]*y[11:20]/sapply(1:10,function(t) sum(y[t:(t+9)])) 

ДАТа

x <- rnorm(20) 
y <- rnorm(20) 
Смежные вопросы