我想根据我的要求对时间序列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月1日2012-05-01
到4月底2015-04-30
的所有数据,无论开始日期和结束日期如何dataframe
。
但是,我熟悉grep
函数来从一个特定列中选择数据。我一直在使用以下代码grep
和with
。
# 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"), ]
通过几行命令,我将能够做到这一点。但如果只用几行或一行命令就可以节省大量时间。
任何帮助将不胜感激。先感谢您。
答案 0 :(得分:1)
如果您的date
列不属于date
类,请先将其转换为一个,
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