2016-12-14 120 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时间系列中的工作。