1

我有一些纬度/经度数据,当 GPS 单元打开时每 10 秒收集一次。这些坐标显然带有时间戳。对于我的目的而言,这太多的数据(30K 加上观察),所以我希望每 2 分钟留下一个带有数据的数据框。我将如何在 R 中做到这一点?

我在下面创建了一个示例数据框。日期和时间被整合到一列中,我希望通过该列对我的数据进行采样。

a <-c(1:21)
D <- c("2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14", "2012/12/14")
Time <- c("18:40:37", "18:40:48", "18:40:58", "18:41:08","18:41:18","18:41:28","18:41:38","18:41:48","18:41:58","18:42:08","18:42:18","18:42:28","18:42:38","18:42:48","18:42:58","18:43:08","18:43:18","18:42:28", "18:44:18", "18:44:28", "18:44:28")
df1 <- data.frame(a, D, Time)

df1 <- within(df1, { timestamp=format(as.POSIXct(paste(D, Time)), "%d/%m/%Y %H:%M:%S") })   

这些装置可以全天打开和关闭,因此记录的秒数可能不一致。

在 R 中执行此操作的最佳方法是什么?

非常感谢,凯蒂

4

1 回答 1

1

最简单的解决方案是这样的:

df1[seq(to=nrow(df1), by=12),]

意思是“每 12 行取一次,从第一行开始”。在设备关闭的情况下,这可能不是最理想的,但除非这种情况经常发生并且非常迅速地连续发生,否则它应该不会太重要。

我的第一个建议如下:

df1[(1:floor(nrow(df1)/12))*12,]

它的作用几乎相同,但从第 12 行而不是第 1 行开始。是从到1:n的整数范围。因此,在这种情况下,我构建了一个由所有整数组成的范围,直到最大整数不大于行数除以 12。然后我将所有这些数字乘以 12。这个版本比上面的不太清楚,但它是第一个我想到的东西,尽管知道可能有用。1n

于 2013-01-16T16:42:18.690 回答