我有一组不规则的时间序列数据,其中数据集中存在间隙。此外,数据是分组的。我已经能够找到观察到的滞后函数(因此它们会在数据集中找到先前的记录),但我想指定一个时间变量,并通过匹配滞后时间来计算滞后。这个问题:R lag/lead irregular time series data 做了类似的事情。然而,我不能使用
输出应该是向量:NA 100 200 NA 400 NA 600 700 NA 900。
目前我正在使用以下内容:
zoo
解决方案(我有某种包不兼容的问题,根本无法使用zoo
),并且未能使data.table
解决方案成为足够灵活的东西,以便将其作为带有滞后量输入和分组数据容量的函数来使用。
测试数据:
testdf <- data.frame(group = c(1,1,1,1,1,2,2,2,2,2),
counter = c(1,2,3,5,6,7,8,9,11,12),
xval = seq(100, 1000, 100))
lagamount <- 1
输出应该是向量:NA 100 200 NA 400 NA 600 700 NA 900。
目前我正在使用以下内容:
library(dplyr)
testout <- group_by(testdf, group) %>%
mutate(testout = function(x) which((testdf$counter - x) == lagamount))
这给我一个数据类型错误,说某些东西(未指定)不是向量。
有没有办法使这个构造工作?或者,如何在分组变量的不规则时间序列中滞后?
zoo
函数称为zoo::needed_function()
,从而避免加载该包。 - Axemanmutate
提供了一个函数,而它期望一个向量。 - Axeman