2016-04-19 5 views
0

Ich möchte die Dauer zwischen 2 Datum eines Datenrahmens berechnen, die wie pro unten formatiert:R TIMEDIFF - 22-JAN-16 04.56.14.325000000 PM

START_DATE_TIME
22-JAN-16 04.56.14.325000000 PM

END_DATE_TIME
23-JAN-16 05.56.14.325000000 AM

ich betreibe das unter Befehl:

jm16$diff <- difftime(strptime(jm16$Start_date_time, format = "%d-%b-%Y %H.%M.%S"), 
         strptime(jm16$End_date_time, format = "%d-%b-%Y %H.%M%S"), 
         units="mins") 

aber es endet das gesamte Feld von jm16 $ diff ist "NA". Bitte helfen Sie mir zu beraten, wo ich Fehler mache?

Dank

Han

+0

% Y für vierstellige Jahre - Sie% y benötigen. Sie müssen auch die AM/PM mit% p –

+0

Hallo Danke für die Antwort angeben. Ich habe den Befehl in jm16 $ diff <- difftime geändert (strptime (jm16 $ Start_datum_zeit, format = "% d-% b-% y% i.% M.% S% p"), ​​strptime (jm16 $ End_datum_zeit, format = "% d-% b-% y% i.% m.% s% p"), ​​Einheiten = "mins"), aber das Ergebnis ist immer noch dasselbe> Zusammenfassung (as.numeric (jm16 $ diff)) Min . 1. Qu. Mittlerer Mittelwert 3rd Qu. Max. NA NA NA NA NaN NA NA 1540335 – user2778168

Antwort

0

Die Formel, die Sie verwenden müssen, ist:

jm16$diff <- difftime(strptime(jm16$End_date_time, format="%d-%b-%Y %I:%M.%OS %p"), 
         strptime(jm16$Start_date_time, format="%d-%b-%Y %I:%M.%OS %p"), 
         units="mins") 

Die folgenden Probleme korrigiert: um

  1. difftime() nehmen difftime(end_time, start_time), nicht andersrum
  2. %I beschäftigt sich mit Stunden in 1-12 zu %H gegenüber, die mit 0-23
  3. Die Stunde behandelt wird durch einen Doppelpunkt in der Zeichenfolge gefolgt, kein Punkt
  4. Es gibt eine auf die Sekunden Bruchteil ist so %OS, statt %S
  5. A " %p" am Ende in dem am/pm nehmen
+0

Hallo Danke für die Antwort. Ich habe versucht, die Formel, die Sie gaben, aber der folgende Fehler angezeigt: Fehler in as.POSIXlt.character (as.character (x), ...): Zeichenkette ist nicht in einem standardmäßigen eindeutigen Format – user2778168

+0

Versuchen Sie es für eine einzelne Zeile ? – lampishthing

+0

Ah, und vielleicht Kleinbuchstaben y – lampishthing