如何按日期拍摄一帧或一帧矢量?

时间:2011-04-19 14:46:08

标签: r time-series

我有一个数据框,其中row.names对应于日期值。

$ cat data.csv
date    actusers    passive
2010-12-31  162 55
2011-01-01  291 167
2011-01-02  270 200
2011-01-03  341 269
2011-01-04  412 324
2011-01-05  409 309
2011-01-06  481 329
2011-01-07  511 358
2011-01-08  364 213

$ r
> data = read.csv("data.csv", row.names=1, sep='\t')
> data
           actusers passive
2010-12-31      162      55
2011-01-01      291     167
2011-01-02      270     200
2011-01-03      341     269
2011-01-04      412     324
2011-01-05      409     309
2011-01-06      481     329
2011-01-07      511     358
2011-01-08      364     213

如何通过指定日期范围来制作此数据框的片段?

2 个答案:

答案 0 :(得分:6)

使用日期,您可以使用简单的数学运算符。或者,您可以合并seq()%in%

zz <- textConnection("
dates           actusers passive
2010-12-31      162      55
2011-01-01      291     167
2011-01-02      270     200
2011-01-03      341     269
2011-01-04      412     324
2011-01-05      409     309
2011-01-06      481     329
2011-01-07      511     358
2011-01-08      364     213")

Data <- read.table(zz,header=T,as.is=T)
close(zz)

Data$dates <- as.Date(Data$dates)

id <- Data$dates < as.Date("2011-01-06")
Data[id,]

Seq <- seq.Date(as.Date("2011-01-03"),as.Date("2011-01-07"),by="day")

Data[Data$dates %in% Seq,]

答案 1 :(得分:6)

如果您对时间序列数据做了很多工作,您可能会发现xts包很有用。它提供了许多用于处理时间序列数据的语法工具。例如,如果您想要2007年6月的所有观察结果,那么您可以通过xts vignette几乎逐字逐句地获取此示例:

require(xts)
data(sample_matrix)
matrix_xts <- as.xts(sample_matrix, dateFormat = "Date")
matrix_xts['2007-06']