如何在 R 中标记带有不规则错误符号的规则时间序列?

堕落的领主

我有一个直接的时间序列序列,例如:

library(lubridate)
start = parse_date_time("2018-01-01","%Y-%m-%d")
end = parse_date_time("2018-01-02","%Y-%m-%d")
series = seq(start,end,by=600)

> series
[1] "2018-01-01 00:00:00 UTC" "2018-01-01 00:10:00 UTC" "2018-01-01 00:20:00 UTC" "2018-01-01 00:30:00 UTC"
[5] "2018-01-01 00:40:00 UTC" "2018-01-01 00:50:00 UTC" "2018-01-01 01:00:00 UTC" "2018-01-01 01:10:00 UTC"
[9] "2018-01-01 01:20:00 UTC" "2018-01-01 01:30:00 UTC" "2018-01-01 01:40:00 UTC" "2018-01-01 01:50:00 UTC"
[13] "2018-01-01 02:00:00 UTC" "2018-01-01 02:10:00 UTC" "2018-01-01 02:20:00 UTC" "2018-01-01 02:30:00 UTC"...

而且我还有一个不规则状态的向量,例如:

error = data.frame(
on = parse_date_time(c("2018-01-01 00:13:57","2018-01-01 01:01:44"),"%Y-%m-%d %H:%M:%S"),
off = parse_date_time(c("2018-01-01 00:21:32","2018-01-01 02:33:45"),"%Y-%m-%d %H:%M:%S")
)

> error
                   on                 off
1 2018-01-01 00:13:57 2018-01-01 00:21:32
2 2018-01-01 01:01:44 2018-01-01 02:33:45

我怎样才能像下面那样用错误标记我的系列?

> flag 
                         series        error
  [1] "2018-01-01 00:00:00 UTC"         "OK"
  [2] "2018-01-01 00:10:00 UTC"         "OK"
  [3] "2018-01-01 00:20:00 UTC"      "ERROR"
  [4] "2018-01-01 00:30:00 UTC"      "ERROR"
  [5] "2018-01-01 00:40:00 UTC"         "OK"
  [6] "2018-01-01 00:50:00 UTC"         "OK"
  [7] "2018-01-01 01:00:00 UTC"         "OK"
  [8] "2018-01-01 01:10:00 UTC"      "ERROR"
  [9] "2018-01-01 01:20:00 UTC"      "ERROR"
 [10] "2018-01-01 01:30:00 UTC"      "ERROR"
 [11] "2018-01-01 01:40:00 UTC"      "ERROR"
 [12] "2018-01-01 01:50:00 UTC"      "ERROR"
 [13] "2018-01-01 02:00:00 UTC"      "ERROR"
 [14] "2018-01-01 02:10:00 UTC"      "ERROR"
 [15] "2018-01-01 02:20:00 UTC"      "ERROR"
 [16] "2018-01-01 02:30:00 UTC"      "ERROR"
 [17] "2018-01-01 02:40:00 UTC"      "ERROR"
 [18] "2018-01-01 02:50:00 UTC"         "OK"
卡鲁姆你

这是一个使用 的解决方案map_lgl,因为lubridate间隔dplyr对我来说很有趣请注意,我使用ceiling_dateonoff来重现您想要的输出,尽管我不清楚为什么最后一行算作ERROR因为,例如,输出"2018-01-01 00:30:00 UTC"中的第4 行在第一个offvalue 之后"2018-01-01 00:21:32"关键部分只是使用interval(或替代地,on %--% off创建区间,然后使用any(%within%)返回逻辑值,以确定系列中的给定值是否在错误区间之一内。ifelse让我们将值转换为字符标志。

library(tidyverse)
library(lubridate)
#> 
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#> 
#>     date
start = parse_date_time("2018-01-01","%Y-%m-%d")
end = parse_date_time("2018-01-02","%Y-%m-%d")
series = seq(start,end,by=600)
error = data.frame(
  on = parse_date_time(c("2018-01-01 00:13:57","2018-01-01 01:01:44"),"%Y-%m-%d %H:%M:%S"),
  off = parse_date_time(c("2018-01-01 00:21:32","2018-01-01 02:33:45"),"%Y-%m-%d %H:%M:%S")
) %>%
  mutate(
    off = ceiling_date(off, unit = "10 minutes"),
    intvs = interval(on, off)
  )

series %>%
  tibble(dttm = .) %>%
  bind_cols(status = map_lgl(series, ~ any(. %within% error$intvs))) %>%
  mutate(status = ifelse(status == TRUE, "ERROR", "OK")) %>%
  print(n = 20)
#> # A tibble: 145 x 2
#>    dttm                status
#>    <dttm>              <chr> 
#>  1 2018-01-01 00:00:00 OK    
#>  2 2018-01-01 00:10:00 OK    
#>  3 2018-01-01 00:20:00 ERROR 
#>  4 2018-01-01 00:30:00 ERROR 
#>  5 2018-01-01 00:40:00 OK    
#>  6 2018-01-01 00:50:00 OK    
#>  7 2018-01-01 01:00:00 OK    
#>  8 2018-01-01 01:10:00 ERROR 
#>  9 2018-01-01 01:20:00 ERROR 
#> 10 2018-01-01 01:30:00 ERROR 
#> 11 2018-01-01 01:40:00 ERROR 
#> 12 2018-01-01 01:50:00 ERROR 
#> 13 2018-01-01 02:00:00 ERROR 
#> 14 2018-01-01 02:10:00 ERROR 
#> 15 2018-01-01 02:20:00 ERROR 
#> 16 2018-01-01 02:30:00 ERROR 
#> 17 2018-01-01 02:40:00 ERROR 
#> 18 2018-01-01 02:50:00 OK    
#> 19 2018-01-01 03:00:00 OK    
#> 20 2018-01-01 03:10:00 OK    
#> # ... with 125 more rows

reprex 包(v0.2.0)2018年 3 月 15 日创建

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在R中增加不规则的时间序列数据

如何在R或Matlab中将不规则间隔的时间序列转换(插值)为规则间隔的时间序列?

如何为常规时间序列转换带有假天数的不规则表?

R:聚合不规则长度的时间序列组

R不规则时间序列的滚动平均值

当数据不规则时,如何在LibreOffice Calc中使图表具有规则的时间间隔?

如何处理不规则间隔的时间序列并返回规则间隔的时间序列

如何使用R将不规则时间转换为XTS对象

如何在给定的不规则日期上对时间序列进行重新采样

如何处理 R 中的不规则日期格式或日期错误?

R中不规则格式的解析时间

如何在ggplot的纵坐标中绘制带有不规则数据的热图?

R时间序列数据集-滞后日期和时间-不规则数据周期

当我有不规则的时间序列数据时,如何使用 1 小时滚动窗口计算 sd(x)?

如何在R中创建时间序列?

如何在R中子集时间序列

在不规则时间进行测量时,如何对时间序列进行插值

当熊猫的时间增量指数不规则时,如何获得时间序列值的每日差异?

如何在R中标记条形图?

如何在R中标记不同的丢失数据

如何在R中标记特定范围的值?

如何在R中标记值的首次出现

如何在时间序列数据中标记类别?

如何序列化不规则的熊猫每小时时间戳?

当半衰期已知时,如何填充/缺失不规则时间序列的值

如何聚合不规则采样的数据以进行时间序列分析

如何在具有不规则数据结构的React(香草)中使用D3的时间标度?

如何在Android中添加R8规则?

HighCharts错误栏具有不规则的时间序列间隔