У меня есть два фрейма данных временных рядов с одинаковыми датами (скажем, фреймы данных называются df1 и df2).Я хочу добавить несколько столбцов в df1, которые имеют отставание valeus от df2
Я пробовал функцию отставания, но она только выведет 1 отставание в 1 столбце.
Создание 2 фреймов данных
Date <- seq.Date(as.Date("2004-01-01"), as.Date("2004-01-06"), by ="day")
df1 <- data.frame(
Date,
Price = sample(c(1:9), length(Date), replace = TRUE))
df2 <- data.frame(
Date,
Catch = c(sample(c(1:100), 2, replace = TRUE), NA,
sample(c(1:100), 2, replace = TRUE), NA))
Мои df1 и df2 выглядят так,
>df1
Date Price
>1 2004-01-01 2
>2 2004-01-02 4
>3 2004-01-03 7
>4 2004-01-04 9
>5 2004-01-05 6
>6 2004-01-06 9
>df2
Date Catch
>1 2004-01-01 95
>2 2004-01-02 14
>3 2004-01-03 NA
>4 2004-01-04 100
>5 2004-01-05 87
>6 2004-01-06 NA
Я пытался использовать функцию задержки:
df1$lag_catch_01 <- lag(df2$Catch, k = 1)
, что дает мне:
Date Price lag_catch
>1 2004-01-01 2 NA
>2 2004-01-02 4 95
>3 2004-01-03 7 14
>4 2004-01-04 9 NA
>5 2004-01-05 6 100
>6 2004-01-06 9 87
Но я действительно хочу вывод, подобный этому:
Date Price lag_catch_01 lag_catch_02
>1 2004-01-01 2 NA NA
>2 2004-01-02 4 95 NA
>3 2004-01-03 7 14 95
>4 2004-01-04 9 NA 14
>5 2004-01-05 6 100 NA
>6 2004-01-06 9 87 100
Я думаю, я мог бы использовать функции задержки несколько раз, как это:
df1$lag_catch_01 <- lag(df2$Catch, k = 1)
df1$lag_catch_02 <- lag(df2$Catch, k = 2)
Но если бы я захотел сделать 20 столбцов, каждый с 20-дневным лагом, это стало бы очень утомительно.