2016-03-09 41 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太棒了!乐于帮助。 :) –

相关问题