我有一些不均匀间隔的天气数据,我想抓住简单的每小时值。我需要每小时,所以我可以使用单独的data.frame
加入这些数据天气数据示例:
> 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
我想只提供每小时数据,但正如您所看到的那样,观察结果并不总是落在小时标记上。我尝试过四舍五入,但后来我同时进行了多次观察。
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
与datetimerounded
之间的差异,我无法轻易确定要保留哪些观察结果。必须有一种更优雅的方式来做到这一点。任何帮助将不胜感激!
答案 0 :(得分:0)
这是我非优雅的解决方案。
我计算了tst.properties
和datetime
datetime_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),]
当然必须有更好的方法来做到这一点。我在R中使用时间序列时并不是很熟悉。