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

如何根据r中的日期范围对数据进行子集划分?,r,datetime,subset,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

我有一个大的.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的数据

我想我需要使用
strtime()
as.Date()
函数将日期和时间变量转换为R中的日期/时间类,但我不清楚如何实现


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

您可以使用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
> 
库(lubridate)
>df-df
日期时间全局有功功率全局无功电压
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
全球气候强度
1             18.4
2             23.0
3             23.0
4             23.0
5             15.8
>日期1=dmy(“2007年6月4日”)
>日期2=dmy(2009年6月4日)
>带(df,df[dmy(df$Date)>=date1,dmy(df$Date)

这可能是重复的,但您可以这样做:
newFile$Date这确实很简单。谢谢您,大卫。