代码之家  ›  专栏  ›  技术社区  ›  firmo23

如何对半小时数据进行时间序列分析?

  •  1
  • firmo23  · 技术社区  · 6 年前

    我有下面的数据集和半小时时间序列数据。

    Date <- c("2018-01-01 08:00:00", "2018-01-01 08:30:00", 
              "2018-01-01 08:59:59","2018-01-01 09:29:59")
    Volume <- c(195, 188, 345, 123)
    Dataset <- data.frame(Date, Volume)
    

    我想知道如何阅读这个数据框架,以便进行时间序列分析。我应该如何定义开始和结束日期以及频率?

    2 回复  |  直到 6 年前
        1
  •  2
  •   jay.sf    6 年前

    我不知道你所说的“半小时数据”是什么意思,因为它不是。如果你想把它四舍五入到半小时,我们可以调整 this solution 根据你的情况。

    Dataset$Date <- as.POSIXlt(round(as.double(Dataset$Date)/(30*60))*(30*60),
                           origin=(as.POSIXlt('1970-01-01')))
    

    万一你不想绕过去,就绕过去吧。

    Dataset$Date <- as.POSIXct(Dataset$Date)
    

    基本上你的 Date 列的格式应为日期格式,例如 "POSIXlt" 因此,例如:

    > class(Dataset$Date)
    [1] "POSIXlt" "POSIXt" 
    

    然后我们可以用 xts .

    library(xts)
    Dataset.xts <- xts(Dataset$Volume, order.by=Dataset$Date)
    

    结果(小写):

    > Dataset.xts
    [,1]
    2018-01-01 08:00:00  195
    2018-01-01 08:30:00  188
    2018-01-01 09:00:00  345
    2018-01-01 09:30:00  123
    
        2
  •  1
  •   DeduciveR    6 年前

    你可以使用 dplyr lubridate tidyverse 要将数据转换为POSIX日期格式,请使用 ts . 在其中,您可以定义参数。

    Dataset2 <- Dataset %>%
      mutate(Date = as.character(Date),
             Date = ymd_hms(Date)) %>% 
      ts(start = c(2018, 1), end = c(2018, 2), frequency = 1)
    

    尝试 ?ts 有关参数的详细信息。我个人认为 zoo xts 为时间序列分析提供更好的框架。