R создать копию столбца, где новый столбец смещен некоторой фиксированной суммой

StackOverflow https://stackoverflow.com/questions/4219715

  •  26-09-2019
  •  | 
  •  

Вопрос

Я ищу создать копию существующей колонны в DataFrame, который смещен рядом строк.

Например, если Column2 является копией смещения столбца1 на 1, то

> dataframe
$column1
[1] 1 2 3 4 5

$column2
[1] 0 1 2 3 4

У меня был какой-то успех со следующим кодом:

offset7 <- rep(0, 7)
dataframe$column1.prev7 = c(offset7, dataframe$column1[1:(length(dataframe$column1)-7)])

Однако он начинает давать ошибки, если я компенсирую на 30 или более. Мои данные достаточно долго, чтобы не быть проблемой смещения, превышающего количество рядов. Ошибка:

Error in dataframe$column1[1:(length(dataframe$column1) - 30)] : 
  only 0's may be mixed with negative subscripts

Заранее спасибо! Бесплатная версия Fast Loop, которая играет приятно с PLYR, будет предпочтительной. Намерение здесь состоит в том, чтобы разбить данные временетений в различные отставания до года, а затем анализируют результаты различными способами.

Это было полезно?

Решение

Пожалуйста Используйте правильный класс временных серий для операций серии Time. Популярные фавориты зоопарк а также мнение оба из которых имеют множество документации.

Как простой пример, рассмотрим

> library(xts)
> foo <- xts(100:109, order.by=Sys.Date()+0:9)
> merge(foo,  l1=lag(foo,1), lm1=lag(foo,-1))
           foo  l1 lm1
2010-11-18 100  NA 101
2010-11-19 101 100 102
2010-11-20 102 101 103
2010-11-21 103 102 104
2010-11-22 104 103 105
2010-11-23 105 104 106
2010-11-24 106 105 107
2010-11-25 107 106 108
2010-11-26 108 107 109
2010-11-27 109 108  NA
> 

Но просто не делай это вручную. И поиск здесь для «r] xts 'или [r] zoo' для поиска в теге r.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top