2013-02-09 142 views
1

我有一個數據集,我有從1997年到2009年的數據,我想根據日期對數據進行子集劃分。按日期劃分數據以創建總結R

我寫的代碼如下:

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

無需轉換列日期,它已經在類Date上。 然後,您需要創建dateMin,並將dateMax強制將字符串轉換爲日期。

這裏,我給正確的格式字符串,否則你需要(在@Mathew答案等)使用format

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!! 

例如,使用例如,它是時間序列,因此需要使用合適的包來處理它。 在這裏,我子集,我繪製(我放大我的時間序列)

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

enter image description here

+0

@ agstudy:非常感謝您的詳細解釋並展示不同的選項。過去我曾經使用過xts,但並沒有深入其中。 – 2013-02-09 20:16:26

+0

@Jdbaba你應該!看到我的更新!我也使用quantmod! – agstudy 2013-02-09 20:19:25

2

你比較日期的數字-2000和-2009(2000年1月1日和2009年1月1日),而不是日期。

creek1 <- subset(creek, date > as.Date('01-01-2000', '%m-%d-%Y') & date < as.Date('01-01-2009', '%m-%d-%Y')) 
+0

@馬修:非常感謝你的回答。它工作完美。 – 2013-02-09 20:16:55