我想将包含测量时间序列的数据帧与相应的POSIXct时间戳进行子集化。这是一个示例数据框:
ExampleData<-data.frame(as.POSIXct(c(1:500, 4845:4860, 61000:62000,
155470 )+1456858328, origin="1970-01-01" ), runif(1518))
其中有四个连续测量:
From 2016-03-01 19:52:09 to 2016-03-01 20:00:28 (500 seconds)
From 2016-03-01 21:12:53 to 2016-03-01 21:13:08 (15 seconds)
From 2016-03-02 12:48:48 to 2016-03-02 13:05:28 (1000 seconds)
From 2016-03-03 15:03:18 to 2016-03-03 15:03:18 (1 seconds)
我想要的是提取超过60秒的所有连续测量。来自Matlab我会写一个for循环并计算它。我想知道是否有一个“R” - 更优雅吗?
非常感谢!
答案 0 :(得分:0)
您可以使用rle
查找连续差异的运行
r <- rle(diff(as.numeric(ExampleData[,1])))
cbind(cumsum(r$lengths)-r$lengths+1,cumsum(r$lengths)+1)[r$values==1,]
[,1] [,2] [1,] 1 500 [2,] 501 516 [3,] 517 1517
此输出表示从索引1到500运行,另一个从索引501到516运行,另一个从索引517到1517运行。