如何从时间序列中删除重大错误?

时间:2019-03-26 14:53:11

标签: time-series data-cleaning

我有很长一段时间的井中5分钟水位数据系列。该系列包含测量误差,可以在时序图中轻松查看。

water level time series plot

head(data)
# A tibble: 229,120 x 4
   date                 temp P_comp_m alt_m
   <dttm>              <dbl>    <dbl> <dbl>
 1 2016-06-10 11:50:00  21.8     1.09 1008.
 2 2016-06-10 11:55:00  21.2     1.07 1008.
 3 2016-06-10 12:00:00  21.1     1.06 1008.
 4 2016-06-10 12:05:00  21.1     1.05 1008.
 5 2016-06-10 12:10:00  21.9     1.05 1008.
 6 2016-06-10 12:15:00  21.8     1.04 1008.
 7 2016-06-10 12:20:00  21.7     1.03 1008.
 8 2016-06-10 12:25:00  21.6     1.03 1008.
 9 2016-06-10 12:30:00  21.5     1.02 1008.
10 2016-06-10 12:35:00  21.5     1.01 1008.
# ... with 229,110 more rows

由于数据量大,我希望自动化数据清理过程。目前,我正在使用R tidyverse工具手动删除虚假数据。

data[between(data$date, 
                 as_datetime("2016-11-27 17:00:00"),
                 as_datetime("2016-11-29 01:50:00")),] <- data %>% 
  filter(between(date, as_datetime("2016-11-27 17:00:00"),
                 as_datetime("2016-11-29 01:50:00"))) %>% 
  mutate(temp = NA,                                        # temperature column 
         P_comp_m = NA,                                    # pressure
         alt_m = NA)                                       # altitude

任何人都可以提供建议以使任务自动化吗?

1 个答案:

答案 0 :(得分:0)

如果您可以表达/表达“虚假”数据的条件,则可以使任务自动化。或者您可以将其中的一部分自动化:例如选择您认为数据是伪造的时间的手动选择/选择,将它们放入引导程序/列表中,并设置一个过程以自动从数据中删除这些数据点(基于手动创建的列表)。