2016-12-14 3 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

Это мое изящное решение.

Я подсчитал абсолютное расстояние между 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),] 

Затем сортируется назад по времени

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

Конечно, есть должен быть лучший способ сделать это. Я еще не очень хорошо знаком с работой с временными рядами в R.

 Смежные вопросы

  • Нет связанных вопросов^_^