从数据框中提取连续测量值

Extract continuous measurements from data frame

我想对一个数据帧进行子集化,该数据帧由具有相应 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" 方法可以使它更优雅?

非常感谢!

您可以使用 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。