2016-03-09 66 views
2

我想根據我的要求對時間序列dataframe進行子集劃分。 我有一個dataframe類似於下面提到的東西。根據兩列或更多列的值設置數據幀

> df 
Date   Year  Month Day Time  Parameter 
2012-04-19 2012  04  19 7:00:00 26 
2012-04-19 2012  04  19 7:00:00 20 
................................................. 
2012-05-01 2012  05  01 00:00:00 23 
2012-05-01 2012  05  01 00:30:00 22 
................................................. 
2015-04-30 2015  04  30 23:30:00 20 
................................................. 
2015-05-01 2015  05  01 00:00:00 26 

dataframe類似這樣我會想從第一個2012年5月2012-05-01的所有數據,以四月2015-04-30末,不管dataframe的開始和結束日期。

但是,我熟悉grep函數來從一個特定列中選擇數據。我一直在使用下面的代碼grepwith

# To select one particular year 
> df.2012 <- df[grep("2012", df$Year),] 
# To select two or more years at the same time 
> df.sel.yr <- df[grep("201[2-5]", df$Year),] 
# To select one particular month of a particular year. 
> df.Dec.2012 <- df[with(df, Year=="2012" & Month=="12"), ] 

有了幾條命令我就可以做到了。但如果我只用幾行或一行命令就可以完成這項工作,那將節省很多時間。

任何幫助將不勝感激。先謝謝你。

回答

1

如果您datedate類的不先將其轉換爲一個由,

df$Date <- as.Date(df$Date) 

,然後你可以通過子集的日期,

df[df$Date >= as.Date("2012-05-01") & df$Date <= as.Date("2015-04-30"), ] 

# Date  Year Month Day  Time  Parameter 
#3 2012-05-01 2012  5 1 00:00:00  23 
#4 2012-05-01 2012  5 1 00:30:00  22 
#5 2015-04-30 2015  4 30 23:30:00  20 
+1

感謝@RonakShah它的工作。 –

+1

@ShretaGhimire太棒了!樂於幫助。 :) –

相關問題