2017-07-25 65 views
0

我有一個數據幀,其中一列包含不同的日期,包括時間,例如,一天中的時間的柱狀圖

as.POSIXct(c("2017-07-03 08:23:00", 
      "2017-07-03 09:00:00", 
      "2017-07-03 17:23:00", 
      "2017-07-03 18:05:00", 
      "2017-07-04 08:24:00", 
      "2017-07-04 09:02:00", 
      "2017-07-04 17:24:00", 
      "2017-07-04 18:01:00", 
      "2017-07-05 08:57:00", 
      "2017-07-05 09:31:00", 
      "2017-07-05 16:25:00", 
      "2017-07-05 17:14:00")) 

現在我想看看某個時間間隔(比如15分鐘)發生了多少次。因此,我的目標是獲得一個頻率(全天)與一天中的時間的直方圖。

任何提示?

編輯:我試圖通過

df$Time <- hm(format(df$Date, "%H:%M")) 

提取的時間,但這個給我留下堂課的一列,我不知道如何處理。我也嘗試過類似

ggplot(df, aes(Date)) + 
geom_histogram() + 
scale_x_time() 

我在這裏的主要問題是我如何使用ggplot做繪圖。

+1

那你試試? – Sotos

+2

[我如何快速將數據幀中的時間列分組爲間隔?](https://stackoverflow.com/questions/2923650/how-do-i-quickly-group-the-time-column-in -a-dataframe-into-intervals) – sebastianmm

+0

@Sotos:請參閱編輯 – Pascal

回答

2

也許更簡單的方式來做到這一點,但是這是我的做法......

library(plyr) 
library(lubridate) 

#Sample Data 
df<-data.frame(time=as.POSIXct(c(
    '2017-07-03 08:23:00', 
    '2017-07-03 09:00:00', 
    '2017-07-03 17:23:00', 
    '2017-07-03 18:05:00', 
    '2017-07-04 08:24:00', 
    '2017-07-04 09:02:00', 
    '2017-07-04 17:24:00', 
    '2017-07-04 18:01:00', 
    '2017-07-05 08:57:00', 
    '2017-07-05 09:31:00', 
    '2017-07-05 16:25:00', 
    '2017-07-05 17:14:00'))) 

#Extract Time 
df$hour = hour(df$time) + minute(df$time)/60 + second(df$time)/3600 

#Create Bins 
bins=c(paste0(rep(c(paste0(0,0:9),10:23), each=4),".", c("00",25,50,75))[-1],"24:00") 

#Divide Data Into Bins 
df$bins = cut(df$hour, breaks=seq(0, 24, 0.25), labels=bins) 

#Reformat to Numeric 
df$bins <- as.numeric(as.character(df$bins)) 

#Histogram 
hist(df$bins) 

#With ggplot 
library(ggplot2) 
ggplot(df, aes(bins)) + 
    geom_histogram()