我有一个很大的.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中的日期/时间类,但我不清楚如何做到这一点。
最简单/最干净的方法是什么?
答案 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
>