2014-05-03 25 views
2

我正在研究一個項目,我想跟蹤另一個事件九個月後的出生總數(想知道是否有相關性)。有人建議我在我的數據框架中使用「lubridate」軟件包來結合MONTH和YEAR(我正在設法這樣做)。如何選擇POSIXct類型的日期範圍

我已成功在兩個數據幀中使用了lubridate。問題是我只想從其中一個數據框中選擇某個日期範圍,而且我很難做到這一點。我想這是因爲數據的類型是POSIXct:

str(model.weather) 
'data.frame': 467 obs. of 2 variables: 
$ DATE  : POSIXct, format: "2006-01-01" "2006-01-01" "2006-01-01" "2006-01-01" ... 
$ EVENT_TYPE: Factor w/ 8 levels "Hail","Heavy Snow",..: 2 2 2 2 2 2 3 2 3 3 ... 

我試圖轉換爲數字,但不幸的是,做我的日期變量可怕,可怕的事情來的數據。我試過轉換因子,字符和整數,他們都沒有效。

我試圖用「子集」功能選擇所需的日期範圍:

model.weather <- subset(model.weather, DATE >= 2006-04-01 | DATE <= 2011-03-01) 

不幸的是,這只是返回原始數據,沒有做任何的過濾。

任何人都可以幫忙嗎?

+1

嘗試引用日期;現在你正在做2006 - 4 - 1 == 2001.你可能需要做一些像'DATE> = as.POSIXct(「2006-04-01」)' – BrodieG

+1

@BrodieG,它不會與'因爲某種原因POSIXct'類,也許它應該是你的另一個研究課題:) –

+0

@DavidArenburg,我想我的評論編輯大約2秒鐘之前你的評論;) – BrodieG

回答

4

如果DATE只包含日期(不包括小時等,就像在你上面的例子數據),你可以將其轉換成as.Date類,然後在其上

model.weather$DATE <- as.Date(model.weather$DATE) 

model.weather <- subset(model.weather, DATE >= "2006-04-01" & DATE <= "2011-03-01") 

或(更好的解決方案)運營

model.weather <- model.weather[model.weather$DATE >= "2006-04-01" & model.weather$DATE <= "2011-03-01", ] 
+0

謝謝,大衛。轉換爲as.Date幫助,而你的第二個(更好的)解決方案讓我獲得了其餘的途徑! – thebonafortuna