2016-12-14 96 views
0

我有一些不均勻間隔的天氣數據,我想抓住簡單的小時值。我需要計時,所以我可以加入這個數據了一個獨立的data.frame氣象數據的將不均勻間隔的時間數據更改爲均勻分佈的小時R

例子:

> weather_df 
A tibble: 10 × 3 
       datetime temperature temperature_dewpoint 
       <dttm>  <dbl>    <dbl> 
1 2011-01-01 00:00:00   4     -1 
2 2011-01-01 00:20:00   3     -1 
3 2011-01-01 00:40:00   3     -1 
4 2011-01-01 01:00:00   2     -1 
5 2011-01-01 01:20:00   2     0 
6 2011-01-01 01:45:00   2     0 
7 2011-01-01 02:05:00   1     -1 
8 2011-01-01 02:25:00   2     0 
9 2011-01-01 02:45:00   2     -1 
10 2011-01-01 03:10:00   2     0 

我想只有每小時的數據,但你可以看到觀察別t總是落在小時標記上。我嘗試了四捨五入,但隨後我有多次觀察。

weather_df$datetime_rounded <- as.POSIXct(round(weather_df$datetime, units = c("hours"))) 

weather_df 
# A tibble: 10 × 4 
       datetime temperature temperature_dewpoint datetime_rounded 
      <dttm>  <dbl>    <dbl>    <dttm> 
1 2011-01-01 00:00:00   4     -1 2011-01-01 00:00:00 
2 2011-01-01 00:20:00   3     -1 2011-01-01 00:00:00 
3 2011-01-01 00:40:00   3     -1 2011-01-01 01:00:00 
4 2011-01-01 01:00:00   2     -1 2011-01-01 01:00:00 
5 2011-01-01 01:20:00   2     0 2011-01-01 01:00:00 
6 2011-01-01 01:45:00   2     0 2011-01-01 02:00:00 
7 2011-01-01 02:05:00   1     -1 2011-01-01 02:00:00 
8 2011-01-01 02:25:00   2     0 2011-01-01 02:00:00 
9 2011-01-01 02:45:00   2     -1 2011-01-01 03:00:00 
10 2011-01-01 03:10:00   2     0 2011-01-01 03:00:00 

我不能容易地確定要保留的觀測不脫離計算的datetime的差。必須有一個更優雅的方式來做到這一點。任何幫助,將不勝感激!

回答

0

這是我非優雅的解決方案。

我計算datetimedatetime_rounded

weather_df$time_dist <- abs(weather_df$datetime - weather_df$datetimerounded) 

之間的絕對距離。然後我排序由距離

weather_df <- weather_df[order(weather_df$time_dist),] 

圓形柱的除去重複項。由於它的排序使觀察最接近圓形小時。

weather_df <- weather_df [!duplicated(weather_df$datetimerounded),] 

那麼到時候

weather_df <- weather_df [order(weather_df$datetimerounded),] 

當然,必須有一個更好的方式來做到這一點排序回來。我還不熟悉在R時間系列中的工作。