我有一个数据框,其中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
Run Code Online (Sandbox Code Playgroud)
如何通过指定日期范围来切片此数据框?
使用日期,您可以使用简单的数学运算符.或者你可以结合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,]
Run Code Online (Sandbox Code Playgroud)
如果您对时间序列数据做了很多工作,您可能会发现xts包很有用.它提供了许多用于处理时间序列数据的语法工具.例如,如果您想要2007年6月的所有观察结果,那么您可以通过xts插图几乎逐字逐句地获取此示例:
require(xts)
data(sample_matrix)
matrix_xts <- as.xts(sample_matrix, dateFormat = "Date")
matrix_xts['2007-06']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1938 次 |
| 最近记录: |