下面的数据集包含半小时的时间序列数据。
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)我想知道如何阅读这个数据,以便进行时间序列分析。我应该如何定义开始和结束日期和频率将是什么?
发布于 2019-02-09 18:57:58
我不太清楚你所说的“半小时数据”是什么意思,因为它不是。如果你想把它整到半个小时,我们可以根据你的情况调整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发布于 2019-02-09 18:45:38
您可以使用dplyr和来自tidyverse的lubridate将数据转换为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为时间序列分析提供了一个更好的框架。
https://stackoverflow.com/questions/54608719
复制相似问题