【问题标题】:Compare two time series比较两个时间序列
【发布时间】:2016-02-09 08:26:04
【问题描述】:

我有两个小时分辨率的时间序列现在我想将负载时间序列与容量时间序列进行比较,并计算负载大于容量时的小时数。所以要知道每小时是否有足够的容量来满足负载。并在没有足够容量的情况下计算确切的差异。

library(xts)
load<-c(81,81,82,98,81,67,90,92,75,78,83,83,83,43,97,92,72,85,62)
capacity<-c(78,97,78,65,45,98,67,109,78,109,52,42,97,87,83,90,99,89,125)
time1<-seq(from=as.POSIXct("2013-01-01 00:00"),to=as.POSIXct("2013-01-01     18:00"),by="hour")
dat0<-data.frame(load,capacity)
df1<-xts(dat0,order.by=time1)

df1
                     load capacity
2013-01-01 00:00:00   81       78
2013-01-01 01:00:00   81       97
2013-01-01 02:00:00   82       78
2013-01-01 03:00:00   98       65
2013-01-01 04:00:00   81       45
2013-01-01 05:00:00   67       98
2013-01-01 06:00:00   90       67
2013-01-01 07:00:00   92      109
2013-01-01 08:00:00   75       78
2013-01-01 09:00:00   78      109
2013-01-01 10:00:00   83       52
2013-01-01 11:00:00   83       42
2013-01-01 12:00:00   83       97
2013-01-01 13:00:00   43       87
2013-01-01 14:00:00   97       83
2013-01-01 15:00:00   92       90
2013-01-01 16:00:00   72       99
2013-01-01 17:00:00   85       89
2013-01-01 18:00:00   62      125

我只想知道最快的计算方法是什么。我需要比较 10 年的数据。

【问题讨论】:

    标签: r time-series


    【解决方案1】:

    我建议使用 dplyr,它在大型数据集上运行速度相当快。查看以下代码,并确保查看官方Introduction to dplyr

    library(dplyr)
    
    ## difference between capacity and load
    dat0 %>% 
      mutate(diff = capacity - load) -> dat1
    
    ## count hours with sufficient capacity
    dat1 %>%
      count(sufficient = diff >= 0) %>%
      data.frame()
    

    这是第二个操作的控制台输出。

      sufficient  n
    1      FALSE  9
    2       TRUE 10
    

    【讨论】:

    • 完美运行!比常规方法快得多
    • 我仍然需要弄清楚如何计算确切的数字
    • 具体数字是什么?
    • 只是在没有足够容量的情况下所有差异的总和。
    • 试试dat1 %&gt;% filter(diff &lt; 0) %&gt;% summarise(sum(diff))
    猜你喜欢
    • 2020-07-16
    • 2022-11-29
    • 2012-12-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多