2012-12-17 89 views
4

我有一個包含 幾百日期的日期格式例如一列的數據幀:索引數據幀

as.Date(c("2011-08-13","2011-09-13","2010-06-12","2012-09-13","2010-09-13","2012-05-26","2012-07-20")) 

現在,我想只選擇行,其中15.03 <日期< 15.8 (3月15日至10月15日之間的所有日期,無視當年)。有沒有簡單的方法來選擇(索引)在這樣的 方式?


我稍微修改我接受了答案,如下:

a <- as.Date(c("2011-08-13","2011-09-13","2010-06-12","2012-09-13","2010-09-13","2012-05-26","2012-07-20")) 
lower <- as.Date("03-15",format="%m-%d") 
upper <- as.Date("08-15",format="%m-%d") 
a[format(a,"%m-%d") < format(upper,"%m-%d") & format(a,"%m-%d") > format(lower,"%m-%d")] 
[1] "2011-08-13" "2010-06-12" "2012-05-26" "2012-07-20" 
+1

查找到'zoo'或'XTS '這樣的數據。 – Tim

+0

有'strftime'的'%j'格式說明符,它將一年中的某一天作爲一個數字。唯一的問題是你將不得不以不同的方式處理閏年 – James

回答

3

base,這個想法是使用功能format

a <- as.Date(c("2011-08-13","2011-09-13","2010-06-12","2012-09-13","2010-09-13","2012-05-26","2012-07-20")) 
lower <- as.Date("2012-03-15") 
upper <- as.Date("2012-08-15") 
a[format(a,"%m-%d") < format(upper,"%m-%d") & format(a,"%m-%d") > format(lower,"%m-%d")] 
[1] "2011-08-13" "2010-06-12" "2012-05-26" "2012-07-20"