R:移动 window 以提取数据帧的子集并将它们存储在数据帧列表中

R: Moving window to extract subsets of dataframe and store them in a list of dataframe

我有一个数据框,其中包含使用 GPS 项圈获得的动物的重新定位。项圈在动物身上戴了 43 天。我想通过移动 window 一天的步长来评估每周(7 天)家庭范围在总监测时间内的演变。

这是我的数据框的第一行:

>head(hodor)
devil       date  time             Tfix fixid ttf Northing Easting alt Maxsnr Hdop sat qual  temp day
1 hodor 12/08/2015 14:00 2015/08/12 14:00    21  97       NA      NA   0      0  0.0   0   NO 34.25   1
2 hodor 12/08/2015 17:00 2015/08/12 17:00    22  97       NA      NA   0      0  0.0   0   NO 34.31   1
3 hodor 12/08/2015 18:00 2015/08/12 18:00    23  97       NA      NA   0      0  0.0   0   NO 30.37   1
4 hodor 12/08/2015 19:00 2015/08/12 19:00    24  74  5343138  598559  14     41  1.2   8   3D 21.31   1
5 hodor 12/08/2015 20:00 2015/08/12 20:00    25  39  5342985  598631  11     39  1.1  10   3D 30.50   1
6 hodor 12/08/2015 21:00 2015/08/12 21:00    26  39  5342202  598873   4     42  1.3   8   3D 20.25   1

完整数据集包含 1052 行,列 "date" 有 43 个水平 我创建了一个列 "day",其值从 1 到 43 对应于 "date"

的级别

这是我想要的结果:

df1 <- hodor[(hodor$day >= 1 & hodor$day <= 7),]
df2 <- hodor[(hodor$day >= 2 & hodor$day <= 8),]
df3 <- hodor[(hodor$day >= 3 & hodor$day <= 9),]
...
df37 <- hodor[(hodor$day >= 37 & hodor$day <= 43),]
lst <- list(df1, df2, df3, ... , df37)

有没有无需手动创建每一行的简单方法?

我发现了几个关于拆分数据帧的问题,但它通常依赖于一个因子的唯一值。就我而言,每个提取的数据帧与其他数据帧有很多重叠。

感谢您的帮助

这里有一个使用 lapply 的快速方法:

lst <- lapply(1:(max(hodor$day) - 6), function(x) hodor[hodor$day %in% (x + 0:6), ])