时间序列缺少按频率识别的观测值

时间:2020-11-08 01:12:01

标签: r

我有一个小时平均值的数据帧,该数据帧是在大约一年的时间内从6个不同的传感器中获取的,这6个传感器中的每一个均位于5个不同的位置。 (示例-site_id arc1045的传感器为0a,0b,0c,0d,0e,0f,site_id arc1046的传感器为0a,0b,0c,0d,0e,0f等)

   site_id sensor_id datetime            hourly_avg
   <chr>   <chr>     <dttm>                   <dbl>
 1 arc1045 0a        2019-11-15 09:00:00       3.67
 2 arc1045 0a        2019-11-15 10:00:00       4.68
 3 arc1045 0a        2019-11-15 11:00:00       5.63
 4 arc1045 0a        2019-11-15 12:00:00       5.8 
 5 arc1045 0a        2019-11-15 13:00:00       6.32
 6 arc1045 0a        2019-11-15 14:00:00       5.28
 7 arc1045 0a        2019-11-15 15:00:00       6.52
 8 arc1045 0a        2019-11-15 16:00:00       5.72
 9 arc1045 0a        2019-11-15 17:00:00       8.43
10 arc1045 0a        2019-11-15 18:00:00       6.62

但是,缺少某些小时平均值。我想通过检查从开始日期(2019-11-15 09:00:00)到结束日期(2020-08-25 15)的每个sensor_id和site_id的小时间隔来找出这些丢失的读数并为这些行添加NA值:00:11)

我可以通过按小时间隔遍历数据帧来做到这一点,但是有没有更简单的方法可以使用R包来处理呢?

1 个答案:

答案 0 :(得分:1)

您可以使用complete中的tidyr来填写缺少的时间。

library(dplyr)
library(tidyr)

df %>%
  group_by(site_id, sensor_id) %>%
  complete(datetime = seq(min(datetime), max(datetime), by = 'hour'))