1

我有一个数据集,其中有 1997 年到 2009 年的数据,我想根据日期对数据进行子集化。

我写的代码如下:

creek <- read.csv("wolfcreek.csv")
library(ggplot2)
creek[1:10,]
colnames(creek) <- c("date","flow")
creek$date <- as.Date(creek$date, "%m/%d/%Y")

我用来创建子集的代码如下:

creek1 <- subset(creek, as.Date(date) > (01-01-2000) & as.Date(date) <(01-01-2009))

但是当我尝试查看 creek1 的摘要时,我得到了

> creek1
[1] date flow
<0 rows> (or 0-length row.names)

谁能告诉我在这里做错了什么?

我使用的数据集可以在https://www.dropbox.com/s/eqpena3nk82x67e/creek.csv上找到

非常感谢。

最好的问候, 贾巴巴

4

2 回答 2

2

您将日期与数字 -2000 和 -2009(1-1-2000 和 1-1-2009)而不是日期进行比较。

creek1 <- subset(creek, date > as.Date('01-01-2000', '%m-%d-%Y') & date < as.Date('01-01-2009', '%m-%d-%Y'))
于 2013-02-09T20:07:11.333 回答
2

无需转换列日期,它已经在日期类中。然后您需要创建 dateMin 和 dateMax 将字符串强制为日期。

在这里,我以正确的格式给出字符串,否则您需要使用format(就像在@Mathew 回答中一样)

subset(creek, date > as.Date("2000-01-01") & date < as.Date("2009-01-01"))

在这里,我将使用 packagexts来实现他的快速子集和简洁的语法

library(xts)
dat.xts <- as.xts(creek$flow, order.by=creek$date)
dat.xts['2000-01/2009-01'] ## powerful and fast!!

使用quantmod例如,它是时间序列,所以我们需要使用合适的包来处理它。在这里我子集,我绘制(我缩放我的时间序列)

 chart_Series(dat.xts['2000-01/2000-09'])

在此处输入图像描述

于 2013-02-09T20:07:59.907 回答