2013-02-20 68 views
1
之間的數據幀

如果我有一個例子數據框:子集兩個時間段

Date <- c("05/12/2012 05:17:00", "05/12/2012 06:10:00", "05/12/2012 06:12:00", "05/12/2012 06:14:00", 
     "06/12/2012 05:25:00", "06/12/2012 06:55:00", "06/12/2012 06:19:00", "06/12/2012 08:00:00", 
     "07/12/2012 05:00:00", "07/12/2012 05:19:00", "07/12/2012 06:04:00", 
     "07/12/2012 06:59:00") 
Date <- strptime(Date, "%d/%m/%Y %H:%M") 
a <- sample(12) 
hour <- as.numeric(format(Date, "%H")) 
min <- as.numeric(format(Date, "%M"))/60 
hours_mins <- hour + min 

df1 <- data.frame(Date,a,hour, min, hours_mins, stringsAsFactors = FALSE) 

我希望能夠以我的子集的05:15和06時之間數據幀只留下數據(單日) :15。

我轉換小時和分鐘爲十進制變量,並希望我也許可以這樣做:

df1[df1$hours_mins >= '5.25' & df1$hours_mins < '6.25'] 

...但可惜這行不通。有沒有人有什麼建議?

+0

有缺失的逗號。嘗試df1 [df1 $ hours_mins> = 5.25&df1 $ hours_mins <6.25,] – 2013-02-20 13:54:15

回答

1

卸下報價和在末尾添加一個逗號

df1[df1$hours_mins >= 5.25 & df1$hours_mins < 6.25,]

0

的POSIXlt對象的優點實際上之一是它自動執行關鍵日期信息。

Date1 <- strptime(c("05/12/2012 05:17:00", "05/12/2012 06:10:00", "05/12/2012 06:12:00", "05/12/2012 06:14:00", 
      "06/12/2012 05:25:00", "06/12/2012 06:55:00", "06/12/2012 06:19:00", "06/12/2012 08:00:00", 
      "07/12/2012 05:00:00", "07/12/2012 05:19:00", "07/12/2012 06:04:00", 
      "07/12/2012 06:59:00"), "%d/%m/%Y %H:%M") 
class(Date1) 
a <- sample(12) 

#please note since strptime() is used Date1 contains "hour", "min" etc 
df1 <- data.frame(Date1, hr=Date1$hour, min=Date1$min, cum_hrs=Date1$min/60+Date1$hour, a, stringsAsFactors = FALSE) 
df1[(df1$hr + df1$min/60>= 5.25) & (df1$hr + df1$min/60< 6.25),] 

此外,如果你想要總小時數(作爲十進制),我在數據框中添加了一列。我希望這會滿足你的需求。

相關問題