我有一个数据集,我有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
答案 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'])