我想轉置一個時間序列數據集以提供給某些機器學習算法。下面是想我做的,除了滯後的數量的例子大,我在尋找一個更優雅的方式來做到這一點:使用dplyr轉置時間序列(帶有滯後的變異)
set.seed(42)
data <- data.frame(time = 1:5, value = rnorm(5))
data
# time value
# 1 1 1.3709584
# 2 2 -0.5646982
# 3 3 0.3631284
# 4 4 0.6328626
# 5 5 0.4042683
data %>%
mutate(lag_1 = lag(value),
lag_2 = lag(value, 2),
lag_3 = lag(value, 3),
lag_4 = lag(value, 4),
lag_5 = lag(value, 5))
# time value lag_1 lag_2 lag_3 lag_4 lag_5
# 1 1 1.3709584 NA NA NA NA NA
# 2 2 -0.5646982 1.3709584 NA NA NA NA
# 3 3 0.3631284 -0.5646982 1.3709584 NA NA NA
# 4 4 0.6328626 0.3631284 -0.5646982 1.3709584 NA NA
# 5 5 0.4042683 0.6328626 0.3631284 -0.5646982 1.370958 NA
我認爲這是最接近精神(沒有使用引用語義)我正在尋找...有沒有辦法推廣到「分組變異」,其中滯後取決於分組? – kevinykuo
這聽起來像是另一個問題,沒有一個例子就不是很清楚。如果我正確地理解了你,你可以滯後組,但是'滯後'不能真正計算第二個參數中的任何東西(即使'2-1'失敗)。 'shift'稍微好一點,但仍然不能處理'n()',這很有用,但你可能會使整個事情在純data.table中工作。 – alistaire