2015-01-23 3 views
0

Я думаю, что я в основном там, но я не могу понять оставшуюся часть того, как правильно это кодировать.Прокатывание прошлых и будущих средних значений от текущего значения

Я начинаю с одного столбца из 15 значений. Я хочу создать два новых столбца с «предыдущим», содержащим среднее из двух предыдущих значений, а «будущее» - создание среднего значения следующих двух значений.

Мой код не работает, потому что он ВКЛЮЧЕН от значений текущей строки.
Например, row3 или '30' должны иметь «предыдущее» значение 15 ((10 + 20/2)) и будущее значение 45 ((40 + 50)/2). вместо этого он возвращает 25 и 35, потому что он включает 30 с 20 или 40 при создании средних значений.

Я также зациклился на том, как просто отобразить предыдущее значение.

Любой ум, говорящий мне, как избежать этой проблемы, которую я испытываю?

Я использую фильтр, но я не знаю, если есть лучший способ сделать это ..

  values=data.frame(col=c(10,20,30,40,50,60,70,80,90,100,110,120,130,140,150)) 
     values$previous2 = filter(values$col, rep(1/2,2),sides=1) 
     values$future2 = filter(values$col, rep(1/2,2),sides=2) 
     values$last = #should be the previous value - ex 2nd row should be 10 
     values 
+0

Назначить 'weight = 0' текущему наблюдению' значения $ previous2 = фильтр (значения $ col, c (0, 1/2, 1/2), sides = 1) '. – Khashaa

+0

о, ничего себе, так просто. Спасибо большое! – runningbirds

ответ

1

Для возвращения последнего значения попробовать:

values$last = c(NA,values[-nrow(values),1]) 

или функцию lag может быть использован, как я полагаю.

+0

большое спасибо! – runningbirds

Смежные вопросы