使用zoo包创建数据框ts时出错

时间:2015-09-07 20:34:40

标签: r dataframe time-series 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

2 个答案:

答案 0 :(得分:4)

代码中有两个错误:(1)如果要从zoo创建read.zoo() data.frame对象,则只需提供对象{{1而不是名称为TSdata的字符串。 (2)"TSdata"不是format。但由于索引已经是"%Y/%m/%d"列,因此无论如何都不需要提供Date

简单地说:

format

答案 1 :(得分:3)

正确的解决方案是由另一个答案给出。作为另一种选择,您可以使用构造函数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