[英]Convert data frame to time series R
我有以下数据
data_sample
date Sum
1 Feb 2015 3322.01
2 Mar 2015 6652.77
3 Apr 2015 3311.12
etc
我需要转换为时间序列进行预测
> data <- xts(data_sample[,-1], order.by=as.Date(data_sample[,1], "%Y %m"))
Error in 1 - frac : non-numeric argument to binary operator
> data <- xts(data_sample[,-1], order.by=as.Date(data_sample[,1], "%m %Y"))
Error in 1 - frac : non-numeric argument to binary operator
> ts_ts(ts_long(data_sample))
Error in guess_time(x) :
No [time] column detected. To be explict, name time column as 'time'.
如果要使用 as.Date(),则必须指定完整日期。 只需在每个条目的末尾添加 01。
date <- c("Feb 2015", "Mar 2015", "Apr 2015")
date <- as.Date(paste(date, "01"), format="%b %Y %d")
您可以按如下方式将它们转换回来,
format(date, "%b %Y")
或使用动物园图书馆中的 as.yearmon,
library("zoo")
as.yearmon(date)
这里的一些例子: Converting Date format in R
R 有多种表示时间序列的方式。 由于您只使用 Date 和 Sum,因此我为您创建了一个示例时间序列。 我选择随机日期和数字。
library(xts)
data_sample <- data.frame(
date = as.Date(c("2012-01-01","2013-01-01","2014-01-01", )),
sum1 = c(3322.01, 6652.77, 3311.12))
head(data_sample)
rdate<- as.Date(data_sample$date, "%m/%d/%y")
fix(rdate)
plot(data_sample$sum1~rdate,type="l",col="red")
假设data_sample
在最后的注释中可重复显示,使用read.zoo
转换为类 zoo 的时间序列,然后以该形式使用它或使用适当的 as 将其转换为其他类,例如 xts 或 ts。 * 功能。 这里我们使用yearmon
类来表示索引,因为它直接表示年和月,没有日。 这个类将用于 zoo 和 xts,当转换为 ts 时,它将被适当地转换。
library(xts) # this also loads zoo
z <- read.zoo(data_sample, FUN = as.yearmon, format = "%b %Y")
as.xts(z)
as.ts(z)
也可以将 Date 类用于 zoo 和 xts 中的索引,但这不适用于 ts 类。 使用 Date 类意味着连续点之间的距离根据每月的天数而变化,而不是定期间隔的系列,因此对每月数据使用 Date 通常对预测没有用。
zd <- aggregate(z, as.Date, c)
xd <- as.xts(zd)
以可复制形式输入
Lines <- "date,Sum
1,Feb 2015,3322.01
2,Mar 2015,6652.77
3,Apr 2015,3311.12 "
data_sample <- read.csv(text = Lines)
air1 <- type.convert(.preformat.ts(AirPassengers))
airpassengers <- as.data.frame(air1)
View(airpassengers)
class(airpassengers)
[1] "data.frame"
它将时间序列数据转换为数据帧。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.