2016-11-14 3 views
0

私は非常に大きなデータフレームを持っています。このデータフレームには、1日に多数のタスクの開始時間と終了時間を含む2つの列が含まれています。時間間隔でタスク数をヒストグラム化する

私の目標は、30分間隔で発生するタスクの数をヒストグラム化することです(間隔を変更する必要があるかもしれませんが、それは簡単だと思います)。私は両方を考慮に開始時刻と終了時刻を取らなければならないので

StartTime <- c("8:30","8:25","10:15","11:30","12:15","12:30","1:00","2:35") 

EndTime <- c("9:00","10:05","12:00","1:05","2:06","2:58","3:30","4:00") 

TaskTimes <- data.frame(StartTime,EndTime) 

私は、これで挑戦しています:ここで

は、サンプル・データ・フレームの私の開始時刻と終了時刻の一例です。

各期間のタスク数を含む一時データフレームを作成しないと、簡単にこの方法ができますか?

+0

例を挙げることができます.2行目の場合、その時間枠に3つのタスクがありますか? –

+0

正しい。したがって、X軸のタイムラインを30分間隔に分割し、各間隔のタスク数をヒストグラムにします。 –

答えて

0

  • は、私はそれからカウントをインクリメントされ、すべての重複を見つけるために、二重ループを行う最初にして、タイムスタンプに変換し、いくつかのコードです。

    StartTime <- c("8:30","8:25","10:15","11:30","12:15","12:30","1:00","2:35") 
    EndTime <- c("9:00","10:05","12:00","1:05","2:06","2:58","3:30","4:00") 
    TaskTimes <- data.frame(StartTime,EndTime) 
    
    TaskTimes$s <- strptime(TaskTimes$StartTime, "%H:%M") 
    TaskTimes$e <- strptime(TaskTimes$EndTime, "%H:%M") 
    
    s <- as.numeric(strptime('0:00', "%H:%M")) 
    df <- data.frame(tick = seq(s, s + 24 * 60 * 60, 30 * 60), count = 0) # increment half hour 
    for (i in 1:nrow(df)) { 
        for (j in 1:nrow(TaskTimes)) { 
        # overlap (StartA <= EndB) and (EndA >= StartB) 
        if (df$tick[i] <= TaskTimes$e[j] & df$tick[i] + 30 * 60 >= TaskTimes$s[j]) { 
         df$count[i] <- df$count[i] + 1 
        } 
        } 
    } 
    
    plot(df) 
    
  • +0

    barplot(df $ count)をヒストグラムのように見せてください。 –

    0

    私は、各瞬間に30分のステップで、開始されたタスクの数とその時点で完了していないタスクを知りたいとします。

    1. アレイ名がstartsendsとする510に、例えば、数(分数)を整数に文字列から「8:30」それぞれ開始と終了を変換。

    2. 配列temp [1440]を作成し、0で埋めてください。すべての開始が異なる場合は、temp[starts]<-1,temp[ends]<-temp[ends]-1と設定します。ここで計算cumsum(temp)

    関連する問題