滞后和汇总时间序列数据
lag and summarize time series data
我花了很多时间寻找答案,但运气不佳。我有一些时间序列数据,需要折叠并创建该数据中每第 n 行的滚动平均值。看起来这在 zoo 和 hmisc 中是可能的,我相信其他包。我需要平均第 1、2、3 行,然后是 3、4、5,然后是 5、6、7 等等。我的数据看起来像这样并且有数千个观察结果:
id time x.1 x.2 y.1 y.2
10 1 22 19 0 -.5
10 2 27 44 -1 0
10 3 19 13 0 -1.5
10 4 7 22 .5 1
10 5 -15 5 .33 2
10 6 3 17 1 .33
10 7 6 -2 0 0
10 8 44 25 0 0
10 9 27 12 1 -.5
10 10 2 11 2 1
我希望它完成后看起来像这样:
id time x.1 x.2 y.1 y.2
10 1 22.66 25.33 -.33 -.66
10 2 3.66 13.33 .27 .50
时间变量 1 实际上是 1、2、3 的平均值,2 是 3、4、5 的平均值,但此时保留时间变量并不重要。我需要按 id 分组,因为它最终会改变。我能弄清楚如何成功执行此操作的唯一方法是使用 Lag() 并使新行领先 1,另一行领先 2,然后对各列取平均值。之后你必须删除每隔一行
1 NA NA
2 1 NA
3 2 1
4 3 2
5 4 3
使用 123 和 345 并删除 234...为每个变量执行此操作将是离谱的,尤其是当我收集新数据时。
有什么想法吗?帮助将不胜感激
也许是这样的?
# sample data
id <- c(10,10,10,10,10,10)
time <- c(1,2,3,4,5,6)
x1 <- c(22,27,19,7,-15,3)
x2 <- c(19,44,13,22,5,17)
df <- data.frame(id,time,x1,x2)
means <- data.frame(rollmean(df[,c(1,3:NCOL(df))], 3))
means <- means[c(T,F),]
means$time <- seq(1:NROW(means))
row.names(means) <- 1:NROW(means)
> means
id x1 x2 time
1 10 22.666667 25.33333 1
2 10 3.666667 13.33333 2
我花了很多时间寻找答案,但运气不佳。我有一些时间序列数据,需要折叠并创建该数据中每第 n 行的滚动平均值。看起来这在 zoo 和 hmisc 中是可能的,我相信其他包。我需要平均第 1、2、3 行,然后是 3、4、5,然后是 5、6、7 等等。我的数据看起来像这样并且有数千个观察结果:
id time x.1 x.2 y.1 y.2
10 1 22 19 0 -.5
10 2 27 44 -1 0
10 3 19 13 0 -1.5
10 4 7 22 .5 1
10 5 -15 5 .33 2
10 6 3 17 1 .33
10 7 6 -2 0 0
10 8 44 25 0 0
10 9 27 12 1 -.5
10 10 2 11 2 1
我希望它完成后看起来像这样:
id time x.1 x.2 y.1 y.2
10 1 22.66 25.33 -.33 -.66
10 2 3.66 13.33 .27 .50
时间变量 1 实际上是 1、2、3 的平均值,2 是 3、4、5 的平均值,但此时保留时间变量并不重要。我需要按 id 分组,因为它最终会改变。我能弄清楚如何成功执行此操作的唯一方法是使用 Lag() 并使新行领先 1,另一行领先 2,然后对各列取平均值。之后你必须删除每隔一行
1 NA NA
2 1 NA
3 2 1
4 3 2
5 4 3
使用 123 和 345 并删除 234...为每个变量执行此操作将是离谱的,尤其是当我收集新数据时。
有什么想法吗?帮助将不胜感激
也许是这样的?
# sample data
id <- c(10,10,10,10,10,10)
time <- c(1,2,3,4,5,6)
x1 <- c(22,27,19,7,-15,3)
x2 <- c(19,44,13,22,5,17)
df <- data.frame(id,time,x1,x2)
means <- data.frame(rollmean(df[,c(1,3:NCOL(df))], 3))
means <- means[c(T,F),]
means$time <- seq(1:NROW(means))
row.names(means) <- 1:NROW(means)
> means
id x1 x2 time
1 10 22.666667 25.33333 1
2 10 3.666667 13.33333 2