按日期子集数据以在R中创建摘要

时间:2013-02-09 19:59:33

标签: r

我有一个数据集,我有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

上找到

非常感谢你。

最诚挚的问候, Jdbaba

2 个答案:

答案 0 :(得分: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'))

答案 1 :(得分:2)

无需转换列日期,它已经在类Date上。 然后你需要创建dateMin,并将dateMax强制转换为日期。

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

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

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

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'])

enter image description here

相关问题