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
但是,某些小时平均值缺失。我想通过检查每个 sensor_id 和 site_id 从开始日期 (2019-11-15 09:00:00) 到结束日期 (2020-08-25 15) 的每小时间隔来找出这些缺失的读数并将这些行附加 NA 值:00:11)
我可以通过每小时循环遍历数据帧来做到这一点,但是有没有更简单的方法来使用 R 包来处理这个问题?
解决方案
您可以使用complete
fromtidyr
来填写缺少的时间。
library(dplyr)
library(tidyr)
df %>%
group_by(site_id, sensor_id) %>%
complete(datetime = seq(min(datetime), max(datetime), by = 'hour'))
推荐阅读
- c++ - 如何检查 c++ lambda 是否被正确捕获?
- kubernetes - 某些命名空间的 Filebeat kubernetes 发现
- c - 如何正确使用clang的`-isysroot`?
- node.js - Vuetity v-autocomplete 和 v-data-table 不起作用
- python - 带有集成 websocket 客户端的 FastAPI 冻结,我应该如何将它们结合起来?
- json - ADX:看不到使用 JSON 映射提取的结果
- angular - 如何使用带有子组件的 Ng-Bootstrap Nav 作为选项卡?
- c# - 如何使用 C# 删除 Windows 本地组(非活动目录组)?
- excel - Excel - 分隔符:文本到按值分组的列
- c++ - 检查号码是否为 Armstrong Number c++