2015-04-01 31 views
0

我的測量數據有 - 比如說 - 大約1分鐘的分辨率,但是不規則。將高分辨率時間序列中的信息與日常信息結合起來

timeSeries 
    time    signal 
1 2015-03-30 00:00:00 17.3 
2 2015-03-30 00:01:00 16.2 
3 2015-03-30 00:02:01 18.4 
4 2015-03-30 00:04:03 17.7 

在第二個數據框中,我有每日信息。

dailyInfo 
    firstEvent   yesterday 
1 2015-03-28 17:01:43 2015-03-27 15:25:51 
2 2015-03-29 17:04:55 2015-03-28 17:01:43 
3 2015-03-30 16:59:03 2015-03-29 17:04:55 

dailyInfo$firstEvent是我的界限。我想這樣做

timeSeries %>% 
    group_by(between(time, dailyInfo$yesterday, dailyInfo$firstEvent)) 

在教程中,信息始終是一個數據幀已經(例如iris %>% group_by(Species) %>% ...)內已經存在。

我的解決方法是計算每組邊界之間的行數,然後複製通常連接的firstEvent -entry,並將結果向量作爲新列置於timeSeries中。

這不是很優雅,所以也許有人可以幫助我如何使用dplyr這個?

回答

2

使用cut

timeSeries %>% 
    mutate(interval = cut(time, dailyInfo$firstEvent)) %>% 
    group_by(interval) 

或計算區間直接group_by

timeSeries %>% 
    group_by(interval = cut(time, dailyInfo$firstEvent)) 

       time signal   interval 
1 2015-03-30 00:00:00 17.3 2015-03-29 17:04:55 
2 2015-03-30 00:01:00 16.2 2015-03-29 17:04:55 
3 2015-03-30 00:02:01 18.4 2015-03-29 17:04:55 
4 2015-03-30 00:04:03 17.7 2015-03-29 17:04:55 
+0

哇,這是完美的。謝謝! – Wordsmyth 2015-04-01 13:56:13