我在嘗試計算平均溫度10分鐘但24小時內向量時遇到了麻煩。平均間隔10分鐘的大型不規則間隔時間序列產生24小時配置文件
我有一個時間系列以正確的POSIX格式存儲在數據幀中。唯一的問題是數據不規則間隔(10±3分鐘)。
我知道如何平均他們在幾小時,幾天,幾個月的年份但我需要獲得24,72或168小時的檔案的平均值。
例如,對於168小時配置文件,我希望在每個星期一的觀察期間在00:00:00,然後在00:10:00,00:20:00等,然後每個星期二,星期三等。
所以我的數據平均值必須符合常規24/72/168向量。
對於24小時向量將像這樣被定義:
seq(ISOdatetime(2001,2,3,0,0,0), ISOdatetime(2001,2,4,0,0,0), by=(60*5))
在常規24小時矢量所得source of this solution here
[1] "2001-02-03 00:00:00 PST" "2001-02-03 00:05:00 PST"
[3] "2001-02-03 00:10:00 PST" "2001-02-03 00:15:00 PST"
[5] "2001-02-03 00:20:00 PST" "2001-02-03 00:25:00 PST"
[7] "2001-02-03 00:30:00 PST" "2001-02-03 00:35:00 PST"
[9] "2001-02-03 00:40:00 PST" "2001-02-03 00:45:00 PST"
問題是我的數據的時間戳與每一天您移可以從下面的示例中看到。在2016-09-01首讀(應該是在00:00:00)是00:01:00,第二天是00:04:00,第二天00:07:00等等。
我試過xts
和zoo
沒有成功,因爲聚合的限制是小時,我需要在幾分鐘內定義它。
的多個答案我已經找到了對付通過不斷的數據集(example1平均時間序列,example2。
可惜我找不到關於我的問題的答案。示例數據庫的
結構:
'data.frame': 9490 obs. of 2 variables:
$ Date_Time_Stamp : POSIXct, format: "2016-09-01 00:01:00" "2016-09-01 00:11:00" "2016-09-01 00:22:00" "2016-09-01 00:32:00" ...
$ Signal_Raw_Value: num 778 694 592 523 567 ...
我的數據是這樣的(頭)尾
Date_Time_Stamp Signal_Raw_Value
1 2016-09-01 00:01:00 777.51
2 2016-09-01 00:11:00 694.38
3 2016-09-01 00:22:00 591.69
4 2016-09-01 00:32:00 523.23
5 2016-09-01 00:42:00 567.24
6 2016-09-01 00:52:00 547.68
:
Date_Time_Stamp Signal_Raw_Value
9485 2016-11-06 23:02:00 660.15
9486 2016-11-06 23:12:00 635.70
9487 2016-11-06 23:22:00 498.78
9488 2016-11-06 23:32:00 415.65
9489 2016-11-06 23:42:00 425.43
9490 2016-11-06 23:53:00 440.10
第一個小時2016年9月1日
Date_Time_Stamp Signal_Raw_Value
1 2016-09-01 00:01:00 777.51
2 2016-09-01 00:11:00 694.38
3 2016-09-01 00:22:00 591.69
4 2016-09-01 00:32:00 523.23
5 2016-09-01 00:42:00 567.24
6 2016-09-01 00:52:00 547.68
7 2016-09-01 01:02:00 562.35
第二天的第一個小時(2016年9月2日)
143 2016-09-02 00:04:00 557.46
144 2016-09-02 00:14:00 557.46
145 2016-09-02 00:24:00 562.35
146 2016-09-02 00:35:00 552.57
147 2016-09-02 00:45:00 503.67
148 2016-09-02 00:55:00 484.11
149 2016-09-02 01:05:00 454.77
第三天行(2016年9月3日)
285 2016-09-03 00:07:00 655.26
286 2016-09-03 00:17:00 537.90
287 2016-09-03 00:27:00 464.55
288 2016-09-03 00:38:00 454.77
289 2016-09-03 00:48:00 425.43
290 2016-09-03 00:58:00 420.54
291 2016-09-03 01:08:00 400.98
和第四日的前1小時:
426 2016-09-04 00:00:00 865.53
427 2016-09-04 00:10:00 723.72
428 2016-09-04 00:20:00 621.03
429 2016-09-04 00:30:00 562.35
430 2016-09-04 00:40:00 493.89
431 2016-09-04 00:51:00 459.66
432 2016-09-04 01:01:00 435.21
處理信號的原始值後,我需要製作這樣的事情: 24 hrs profile和168小時:168 hrs profile 。
謝謝!
解決此問題的一種方法是使用seq函數從數據的開始到結束創建一個10分鐘間隔的數組。使用新創建的數組的cut函數作爲break參數。現在你可以聚合,但新定義的切割值 – Dave2e
我有一個部分成功與以下(優雅?)解決方案: 聚合(qxts,格式(索引(qxts),「%H」),平均值) 這產生每小時每小時平均值。我堅持改變間隔10或15分鐘。任何想法如何繼續前進? – Patryk