我有一个数据框,其中包含使用GPS项圈获得的动物的重新定位。衣领在动物身上43天。我想评估每周(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)
如果不手动创建每一行,是否有一种简单的方法可以做到这一点?
我发现了几个关于拆分数据帧的问题,但它通常依赖于一个因子的唯一值。就我而言,每个提取的数据帧与其他数据帧有很多重叠。
感谢您的帮助
答案 0 :(得分:0)
这是一种用lapply做的快速方法:
lst <- lapply(1:(max(hodor$day) - 6), function(x) hodor[hodor$day %in% (x + 0:6), ])