Базовая задержка в векторе / кадре данных R

Скорее всего, обнаружит, что Я новичок в R, но в SPSS очень легко справиться с задержками. Очевидно, это ошибка пользователя, но чего мне не хватает?

x <- sample(c(1:9), 10, replace = T)
y <- lag(x, 1)
ds <- cbind(x, y)
ds

Результатов в:

      x y
 [1,] 4 4
 [2,] 6 6
 [3,] 3 3
 [4,] 4 4
 [5,] 3 3
 [6,] 5 5
 [7,] 8 8
 [8,] 9 9
 [9,] 3 3
[10,] 7 7

Я полагал, что увижу:

     x y
 [1,] 4 
 [2,] 6 4
 [3,] 3 6
 [4,] 4 3
 [5,] 3 4
 [6,] 5 3
 [7,] 8 5
 [8,] 9 8
 [9,] 3 9
[10,] 7 3

Любые указания будут очень признательны.

35
задан Joshua Ulrich 31 August 2012 в 02:49
поделиться

4 ответа

Еще один способ справиться с этим — использовать пакет zoo, в котором есть метод задержки, дополняющий результат NA:

require(zoo)
> set.seed(123)
> x <- zoo(sample(c(1:9), 10, replace = T))
> y <- lag(x, -1, na.pad = TRUE)
> cbind(x, y)
   x  y
1  3 NA
2  8  3
3  4  8
4  8  4
5  9  8
6  1  9
7  5  1
8  9  5
9  5  9
10 5  5

Результатом является многомерный объект зоопарка (который является расширенным матрица), но легко преобразуется в data.frame через

> data.frame(cbind(x, y))
27
ответ дан 27 November 2019 в 06:43
поделиться

Просто избавься от лагов. Измените строку для y на:

y <- c(NA, x[-1])
-1
ответ дан 27 November 2019 в 06:43
поделиться

lag не сдвигает данные, а только сдвигает "временную базу". x не имеет "временной базы", поэтому cbind не работает должным образом. Попробуйте cbind (as.ts (x), lag (x)) и обратите внимание, что «запаздывание», равное 1, сдвигает периоды вперед .

Я бы предложил использовать zoo / xts для временных рядов. Особенно полезны виньетки из зоопарка .

15
ответ дан 27 November 2019 в 06:43
поделиться

lag() работает с временными рядами, тогда как вы пытаетесь использовать голые матрицы. Этот старый вопрос предлагает вместо этого использовать embed, например так:

lagmatrix <- function(x,max.lag) embed(c(rep(NA,max.lag), x), max.lag+1)

например

> x
[1] 8 2 3 9 8 5 6 8 5 8
> lagmatrix(x, 1)
      [,1] [,2]
 [1,]    8   NA
 [2,]    2    8
 [3,]    3    2
 [4,]    9    3
 [5,]    8    9
 [6,]    5    8
 [7,]    6    5
 [8,]    8    6
 [9,]    5    8
[10,]    8    5
7
ответ дан 27 November 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: