R 如何分配或访问时间序列对象的索引?
我的例子 一些数据:R 如何分配或访问时间序列对象的索引?,r,R,我的例子 一些数据: set.seed(1000) dates<- seq.Date(as.Date("2013-01-01"), as.Date("2013-01-31"),by='days') y <- round(3 * 3 + rnorm(31),1) df<- cbind.data.frame(dates, y) 但是我得到了NAs。所以我想我必须定义一个时间序列对象: library(zoo) library(xts) ts <
set.seed(1000)
dates<- seq.Date(as.Date("2013-01-01"), as.Date("2013-01-31"),by='days')
y <- round(3 * 3 + rnorm(31),1)
df<- cbind.data.frame(dates, y)
但是我得到了NAs
。所以我想我必须定义一个时间序列对象:
library(zoo)
library(xts)
ts <- ts(df$y, start=as.Date("2013-01-01"), end=as.Date("2013-01-31"))
length.estimationPeriod.values <-ts[estimtaionPeriod[[1]] : estimtaionPeriod[[2]]]
ts <- zoo(df$y, order.by = as.Date("2013-01-01"), as.Date("2013-01-31"))
length.estimationPeriod.values <-ts[estimtaionPeriod[[1]] : estimtaionPeriod[[2]]]
图书馆(动物园)
图书馆(xts)
ts您可以创建date
对象的seq
,然后使用match
获取相应的y
值
df$y[match(seq(as.Date("2013-01-25"), as.Date("2013-01-31"), "days"), df$dates)]
#[1] 8.4 9.6 7.2 9.3 9.6 10.2 8.8
你的方法非常接近。一种可能的解决方案是使用which
函数查找起点和终点的索引。例如:
estimtationPeriod <- as.Date(c("2013-01-25", "2013-01-31"))
startstop=match(estimtationPeriod , df$dates)
df$y[startstop[1] : startstop[2]]
estimtationPeriod1)子集在指定条件下尝试子集
df
:
subset(df, dates >= "2013-01-25" & dates <= "2013-01-31")
3)xtsxts对此有一个特殊的索引符号:
library(xts)
x <- as.xts(read.zoo(df))
w <- x["2013-01-25/2013-01-31"]
fortify.zoo(w) # optional - to convert back to data.frame
库(xts)
x
library(zoo)
z <- read.zoo(df)
w <- window(z, start = "2013-01-25", end = "2013-01-31")
fortify.zoo(w) # optional - to convert back to data.frame
library(xts)
x <- as.xts(read.zoo(df))
w <- x["2013-01-25/2013-01-31"]
fortify.zoo(w) # optional - to convert back to data.frame