使用 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
## ...