【发布时间】:2019-04-19 02:05:03
【问题描述】:
我有一个大型数据集,其中包含特定日期的多个值。数据集中存在缺失值,因为它存在很长一段时间。这是一个小例子:
set.seed(1)
data <- data.frame(
Date = sample(c("1993-07-09", "1993-07-09", "1993-07-10", "1993-08-11", "1993-08-11", "1993-08-11")),
Oxygen = sample(c(0.2, 0.4, 0.4, 0.2, 0.4, 0.5))
)
data$Date <- as.Date(data$Date)
我想把这个dataframe转换成一个ts对象,这样我就可以预测,使用arima模型,最终找出异常值。
它特别需要是一个 ts 对象,而不是一个 xts 对象。
我面临的问题是: 1)我不知道如何将数据框转换为 ts 对象。 2) 创建一个 ts 对象,允许在一天内发生多个值。
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
你最终会得到很多
NA值来将其表示为ts/mts类对象,因为你没有均匀分布的数据。可以吗? -
@thelatemail 是否有替代方案不会以 NA 值结束?如果没有,我会尝试使用带有 NA 的版本。
-
您的数据是表示同一天不同时间出现的氧气值(长数据)还是表示同一日期的不同测量值/列(宽数据)?你能提供一个你需要的输出结构的例子吗?
-
@dmca 它们代表同一日期的不同测量值/列。我需要的输出只是为了让我的数据可以识别为 ts 对象,这样当我使用异常值检测包(tsoutliers)时,它就能够运行该对象。该包仅识别时间序列而不识别数据帧。
-
如果您想检测氧气中的异常值,那么每次对氧气需求的测量都发生在不同的时间点。由于您的数据是按日期而非日期时间键入的,因此无法区分同一天的测量值。您要么需要每天选择一个测量值,以某种方式汇总它们(如 GG 建议的那样),要么有多个具有不同异常值集的 Oxygen 时间序列(其中一些会有 NA)。
标签: r dataframe type-conversion time-series