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