我有一个数据框,其中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
如何通过指定日期范围来制作此数据框的片段?
答案 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']