如何根据r中的日期范围对数据进行子集化?

时间:2014-06-03 05:10:24

标签: r datetime subset

我有一个很大的.txt数据文件,我需要根据日期范围进行分组。

head(newFile)
        Date     Time Global_active_power Global_reactive_power Voltage Global_intensity
1 16/12/2006 17:24:00               4.216                 0.418  234.84             18.4
2 16/12/2006 17:25:00               5.360                 0.436  233.63             23.0
3 16/12/2006 17:26:00               5.374                 0.498  233.29             23.0
4 16/12/2006 17:27:00               5.388                 0.502  233.74             23.0
5 16/12/2006 17:28:00               3.666                 0.528  235.68             15.8
6 16/12/2006 17:29:00               3.520                 0.522  235.02             15.0
  Sub_metering_1 Sub_metering_2 Sub_metering_3
1              0              1             17
2              0              1             16
3              0              2             17
4              0              1             17
5              0              1             17
6              0              2             17

我只需要使用日期2007-02-01和2007-02-02中的数据。

我想我需要使用strptime()as.Date()函数将日期和时间变量转换为R中的日期/时间类,但我不清楚如何做到这一点。

最简单/最干净的方法是什么?

1 个答案:

答案 0 :(得分:3)

你可以使用lubridate库,这个代码就是一个例子,我从你的数据做了一点改变

library(lubridate)

> df <- read.table("test2.txt", header=TRUE)
> df
        Date     Time Global_active_power Global_reactive_power Voltage
1 16/12/2006 17:24:00               4.216                 0.418  234.84
2 16/12/2006 17:25:00               5.360                 0.436  233.63
3 16/12/2007 17:26:00               5.374                 0.498  233.29
4 16/12/2007 17:27:00               5.388                 0.502  233.74
5 16/12/2006 17:28:00               3.666                 0.528  235.68
  Global_intensity
1             18.4
2             23.0
3             23.0
4             23.0
5             15.8
> date1 = dmy("04/06/2007")
> date2 = dmy("04/06/2009")
> with( df , df[ dmy(df$Date) >= date1 ,dmy(df$Date) <= date2 ] )
        Date     Time Global_active_power Global_reactive_power Voltage
3 16/12/2007 17:26:00               5.374                 0.498  233.29
4 16/12/2007 17:27:00               5.388                 0.502  233.74
  Global_intensity
3               23
4               23
>