2013-02-07 23 views
2

搜索了幾個小時之後,它發現我無法找到解決以下問題的解決方案。我有2個數據幀,一個包含觀察日期的一列,其他包含開始日期和日期和結束日期:R從一個單獨的數據框中查詢日期在一個數據框中的日期

例如:

head(x) 
station temp obsdate 
311820 65.0 1973-01-01 
311821 62.0 1973-01-02 
etc... 

head(seasonDates) 
season startDate endDate 
A  1973-11-01 1974-06-30 
B  1974-11-01 1975-06-30 
C  1975-11-01 1976-06-30 
etc... 

我想分配「季節'如果觀察日期'obsdate'在由'startDate'到'endDate'指示的日期範圍內,則從'seasonDates'數據框到'x'數據框。任何幫助是極大的讚賞。

+2

[你嘗試過什麼?](http://whathaveyoutried.com) – 2013-02-07 21:59:32

+0

我希望我可以使用條件來解決這個: 'ifelse(x $ obsdate> = seasonDates $ startDate,x $ season = seasonDates $ season,0)' – austin

回答

3

假設這三個日期欄,類「日期」:

library(sqldf) 
sqldf("select * from x left join seasonDates on 
     (obsdate between startDate and endDate)") 
+0

我可以推薦一些類似'select x。*,seasonDates .season ....' – agstudy

+0

謝謝你這個解。出於某種原因,當我運行這個時,我結束了重複匹配,其中一個重複行的匹配不正確。但是,如果我將開始日期作爲數字進行投影,則它可以完美地工作。我檢查了所有的日期都是「日期」類,並尋找明顯的錯誤。顯然,我的SQL人才不如恆星,所以我懷疑它與我如何使用左連接有關。十分感謝! – austin

+0

@austin,如果您以可複製的形式發佈或發送給我,我可以查看它。 –

相關問題