【问题标题】:Check whether time-series 1 is greater than time-series 2 for a specific continuous duration检查时间序列 1 是否在特定连续持续时间内大于时间序列 2
【发布时间】:2016-09-30 23:15:19
【问题描述】:

我有两个持续时间相同的时间序列(timeseries1timeseries2

    library(xts)
    set.seed <- 1024
    series <- seq(from= as.POSIXct(strptime("2015-01-01", format="%Y-%m-%d")),to = as.POSIXct(strptime("2015-01-02", format="%Y-%m-%d")), by= "10 mins") 
    timeseries1 <- xts(rnorm(length(series),50,2),series)
    timeseries2 <- xts(rnorm(length(series),51.5,1),series)
    plot(timeseries1,main="")
    lines(timeseries2,col="blue")
    legend("topleft", legend=c("Timeseries-1","Timeseries-2"),lty = 1, col=c("black","blue"))

情节是:

我需要找出timeseries2 是否连续一小时大于timeseries1。我知道,我可以从逐点比较开始,并保留一个计数器来检查timeseries2 是否大于timeseries1 for n 间隔,但我认为必须有一些现有的新方法。

是否有任何现有的方法可以对 R 中的时间序列数据执行此操作?

【问题讨论】:

    标签: r time-series xts zoo


    【解决方案1】:

    您可能正在寻找 rle 函数,它计算等值运行的长度。

    在您的情况下,您可以检查 timeseries2 是否大于 timeseries1 持续一小时,如下所示:

    comparison <- c(ifelse(coredata(timeseries2) > coredata(timeseries1),1,0))
    lenghEnc <- rle(comparison)
    
    any(lenghEnc$lengths>=6 & lenghEnc$values==1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 2021-07-23
      • 2014-10-18
      • 2019-05-16
      • 2020-03-16
      • 1970-01-01
      相关资源
      最近更新 更多