2017-07-25 19 views
0

私は1つの列に時刻を含む異なる日付が含まれているデータフレームを持っています。時刻のヒストグラム

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() 
関連する問題