2016-11-21 5 views
-1

Ich habe einen Datensatz, der eine Sammlung von Ereignissen (mehrere Ereignisse pro Tag) für ein ganzes Jahr ist. Die Variablen enthalten Datum, Startzeit und Endzeit (unter anderem). Ich versuche herauszufinden, wie viele dieser Ereignisse sich jeden Tag überschneiden. Um meine Schleife zu vereinfachen, sortierte ich zuerst meine Excel-Datei nach Datum und dann nach Startzeit. Ich habe die allgemeine Vorstellung von der Schleife, kann aber nicht herausfinden, wie es mit R. kompatibel machenÜberlappungen in einem Datensatz zählen

Meine Idee ist, ein leeres Array zu initialisieren, zum Zählen der Zeit überlappt, Schleife durch jedes Datum, Schleife durch jedes Ereignis begin time, überprüfen, um zu sehen, ob das nächste Ereignis überlappt, add 1 zu meiner Zeit Overlap-Zähler-Array. Auf diese Weise kann ich sehen, wie viele Ereignisse sich jeden Tag mit einem anderen Ereignis überschnitten.

Jede Hilfe würde sehr geschätzt werden. Hier

overlaps = NULL 
for (n in date) { 
    for (i in start.time) { 

     if (start.time[i] < start.time[i+1] 
      || end.time[i] < start.time[i+1]) { 
     overlaps = overlaps + 1 
     } 
    } 
    } 
+0

Es würde wahrscheinlich helfen, wenn Sie Beispiel Eingabe und entsprechende Ausgabe enthalten. Einige Anleitungen finden Sie hier: http://stackoverflow.com/a/28481250/ – Frank

Antwort

0

ist ein Teil meines Datensatzes:

dates <- as.POSIXct(c("2015-01-02", "2015-01-02", "2015-01-02", "2015-01-05", "2015-01-05", "2015-01-05", "2015-01-05", "2015-01-05", "2015-01-05", "2015-01-05", "2015-01-05", "2015-01-05", "2015-01-05", "2015-01-05", "2015-01-05", "2015-01-05"), format="%Y-%m-%d") 

start.time <- c("8:04", "12:31", "22:33", "7:55", "9:56", "12:35", "12:36", "14:00", "14:05", "14:10", "16:53", "20:47", "21:54", "22:00", "22:09", "23:23") 

start.time <- as.POSIXct(paste(dates, start.time, sep = " ")) 

end.time <- c("9:12", "13:16", "23:08", "8:35", "10:44", "13:30", "13:14", "14:45", "14:43", "14:42", "17:23", "21:25", "22:32", "22:45", "22:31", "23:57") 

end.time <- as.POSIXct(paste(dates, end.time, sep = " ")) 

events <- data.frame(dates, start.time, end.time) 

##output## 
dates   start.time   end.time 
1 2015-01-02 2015-01-02 08:04:00 2015-01-02 09:12:00 
2 2015-01-02 2015-01-02 12:31:00 2015-01-02 13:16:00 
3 2015-01-02 2015-01-02 22:33:00 2015-01-02 23:08:00 
4 2015-01-05 2015-01-05 07:55:00 2015-01-05 08:35:00 
5 2015-01-05 2015-01-05 09:56:00 2015-01-05 10:44:00 
6 2015-01-05 2015-01-05 12:35:00 2015-01-05 13:30:00 
7 2015-01-05 2015-01-05 12:36:00 2015-01-05 13:14:00 
8 2015-01-05 2015-01-05 14:00:00 2015-01-05 14:45:00 
9 2015-01-05 2015-01-05 14:05:00 2015-01-05 14:43:00 
10 2015-01-05 2015-01-05 14:10:00 2015-01-05 14:42:00 
11 2015-01-05 2015-01-05 16:53:00 2015-01-05 17:23:00 
12 2015-01-05 2015-01-05 20:47:00 2015-01-05 21:25:00 
13 2015-01-05 2015-01-05 21:54:00 2015-01-05 22:32:00 
14 2015-01-05 2015-01-05 22:00:00 2015-01-05 22:45:00 
15 2015-01-05 2015-01-05 22:09:00 2015-01-05 22:31:00 
16 2015-01-05 2015-01-05 23:23:00 2015-01-05 23:57:00 

Jetzt muss ich herausfinden, wie die Anzahl der überlappenden Ereignisse jeden Tag zu zählen. Ich kann die Ausgabe aus der Schleife, die ich in meiner Frage geschrieben habe, nicht einschließen, weil sie in R nicht korrekt geschrieben ist. Ich habe die Schleife geschrieben, um aus einer Programmierposition zu zeigen, was ich mit meiner Schleife erreichen will, ich weiß einfach nicht gehe über das Erstellen dieser Art von Schleife in R.

Verwandte Themen