使用 zoo 包创建数据框 ts 时出错
Error for create data frame ts with zoo package
我尝试使用我的特定案例使用 zoo 包创建用于时间序列分析的数据框,但没有用,我的人工脚本是:
require(zoo)
TSdata<-NULL
TSdata$id<-seq(1:30) ##ID
TSdata$Date<-seq(as.Date("2015/1/15"), by = 15, length.out = 30) ## Vector of date
TSdata$rain<-rnorm(30,mean=125)#Covariate 1
TSdata$temp<-rnorm(30,mean=32.6) #Covariate 2
TSdata$y<-rpois(30,lambda=15) # Response variable
TSdata<-as.data.frame(TSdata) ## Convert to data frame
## Create temporal series object
ts.data <- read.zoo(text="TSdata", format="%Y/%m/%d", index.column = 2) ## Here the problem
正确的解决方案是其他答案给出的。作为另一种选择,您可以使用构造函数 zoo
:
zoo(x=TSdata[,!grepl("Date",colnames(TSdata))],
order.by = TSdata$Date)
# id rain temp y
# 2015-01-15 1 122.6501 32.46969 18
# 2015-01-30 2 124.4833 31.46569 13
# 2015-02-14 3 125.2021 33.05852 13
您的代码中有两个错误:(1) 如果您想从 data.frame
创建一个带有 read.zoo()
的 zoo
对象,那么您只需提供对象 TSdata
而不是名称为 "TSdata"
的字符串。 (2) format
不是 "%Y/%m/%d"
。但是由于索引已经是一个 Date
列,所以无论如何都不需要提供 format
。
只需执行:
read.zoo(TSdata, index.column = 2)
## id rain temp y
## 2015-01-15 1 125.3376 32.91936 13
## 2015-01-30 2 125.2048 32.71199 17
## 2015-02-14 3 125.7443 32.74698 17
## ...
我尝试使用我的特定案例使用 zoo 包创建用于时间序列分析的数据框,但没有用,我的人工脚本是:
require(zoo)
TSdata<-NULL
TSdata$id<-seq(1:30) ##ID
TSdata$Date<-seq(as.Date("2015/1/15"), by = 15, length.out = 30) ## Vector of date
TSdata$rain<-rnorm(30,mean=125)#Covariate 1
TSdata$temp<-rnorm(30,mean=32.6) #Covariate 2
TSdata$y<-rpois(30,lambda=15) # Response variable
TSdata<-as.data.frame(TSdata) ## Convert to data frame
## Create temporal series object
ts.data <- read.zoo(text="TSdata", format="%Y/%m/%d", index.column = 2) ## Here the problem
正确的解决方案是其他答案给出的。作为另一种选择,您可以使用构造函数 zoo
:
zoo(x=TSdata[,!grepl("Date",colnames(TSdata))],
order.by = TSdata$Date)
# id rain temp y
# 2015-01-15 1 122.6501 32.46969 18
# 2015-01-30 2 124.4833 31.46569 13
# 2015-02-14 3 125.2021 33.05852 13
您的代码中有两个错误:(1) 如果您想从 data.frame
创建一个带有 read.zoo()
的 zoo
对象,那么您只需提供对象 TSdata
而不是名称为 "TSdata"
的字符串。 (2) format
不是 "%Y/%m/%d"
。但是由于索引已经是一个 Date
列,所以无论如何都不需要提供 format
。
只需执行:
read.zoo(TSdata, index.column = 2)
## id rain temp y
## 2015-01-15 1 125.3376 32.91936 13
## 2015-01-30 2 125.2048 32.71199 17
## 2015-02-14 3 125.7443 32.74698 17
## ...