簡體   English   中英

在R中聚合順序時間記錄

[英]Aggregate sequential time recordings in R

我試圖按時間序列計算順序記錄,並聚合這些序列的數據。

示例數據

以下是最大頻率為1秒的數據示例:

timestamp   Value
06:07:23    0.439
06:07:24    0.556
06:07:25    0.430
06:07:26    0.418
06:07:27    0.407
06:07:47    0.439
06:07:48    0.420
06:07:49    0.405
09:55:21    0.507
09:55:22    0.439
10:03:24    0.439
10:03:25    0.439
10:03:36    1.708
10:03:37    0.608
10:03:38    0.439
10:03:46    0.484
10:03:47    0.380
10:03:48    0.607
10:03:49    0.439
10:03:50    0.439
10:03:51    0.439
10:03:52    0.430
10:03:53    0.439
10:03:54    4.924
10:03:55    1.012
10:03:56    0.887
10:03:57    0.439
10:03:58    0.439
10:04:18    0.447
10:04:19    0.447

可以看出,存在每秒采用一個值的時期。 我試圖找到一種聚合的方法,如果觀察結果之間沒有差距,最終會得到如下結果:

timestamp   max     duration
06:07:23    0.556   5
06:07:47    0.439   3
09:55:21    0.507   2
10:03:24    0.439   2
10:03:36    1.708   3
10:03:46    1.012   13
10:04:18    0.447   2

我正在努力尋找一種按順序數據對數據進行分組的方法。 我能找到的最接近的答案就是這個答案,然而,答案是在三年半前提供的,我正努力讓data.table方法正常工作。

任何想法非常感謝!

這是data.table的嘗試:

dat[, 
  .(timestamp = timestamp[1], max = max(Value), duration=.N),
  by = cumsum(c(FALSE, diff(as.POSIXct(dat$timestamp, format="%H:%M:%S", tz="UTC")) > 1))
]

#   cumsum timestamp   max duration
#1:      0  06:07:23 0.556        5
#2:      1  06:07:47 0.439        3
#3:      2  09:55:21 0.507        2
#4:      3  10:03:24 0.439        2
#5:      4  10:03:36 1.708        3
#6:      5  10:03:46 4.924       13
#7:      6  10:04:18 0.447        2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM