我尝试使用我的特定情况创建一个用于动态包的时间序列分析的数据框,但是不起作用,我的人工脚本是:
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
答案 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