2016-12-07 3 views
0

Ich habe ein Zeitformat in hhmmss.mm geschrieben, wie 225014.09 aus einer Tabelle importiert. Es ist Erdbebenzeit. Ich will es in 22:50:14 (: 09?) In R.Wie konvertiert man ein Zeitformat in hhmmss.mm in die normale Zeit in R?

verwandeln Ich weiß nicht, was mit den Millisekunden zu tun ist. Es sollte der obige Weg sein. Kann mir jemand helfen? Ich habe gesucht und gesucht, konnte aber die Antwort nicht finden.

+0

'as.POSIXct ('225014.09', tz = 'UTC', Format = '% H% M% OS')', obwohl das heutige Datum eingefügt wird. – alistaire

+0

Wenn Sie ein Datetime-Objekt nicht interessieren/wollen, können Sie den String erstellen, indem Sie ihn trennen und die Doppelpunkte einfügen: 't <- 225014.09; paste0 (substr (t, 1,2), ":", substr (t, 3,4), ":", substr (t, 5,6)) ' – SymbolixAU

+0

Regex-Version der Zeichenfolge:' gsub ('(..) (..) (..) \\. (. +) ',' \\ 1: \\ 2: \\ 3 (: \\ 4) ',' 225014.09 ') ' – alistaire

Antwort

1

Es gibt zwei allgemeine Regeln dafür:

  1. nicht Daten und Zeiten Verwenden Sie reguläre Ausdrücke für
  2. Parsen
  3. Folgen Regel 1.

In allen Ernstes, verwenden ein Datetime Parser von denen R hat viele. Aber ein Schlüssel hier ist, dass Sie eine Zeit haben und noch nicht ein Datum, so dass Sie noch nicht als datetime analysieren können.

So so etwas tun:

R> tstr <- "225014.09" 
R> dtstr <- paste("2026-01-01", tstr) # which date does not matter 
R> pt <- anytime(dtstr)    # now it is parsed 
R> pt 
[1] "2026-01-01 22:50:14.08 CST" 
R> tstr <- "225014.09" 
R> dtstr <- paste("2016-01-01", tstr) # which date does not matter 
R> pt <- anytime(dtstr)    # now it is parsed 
R> pt 
[1] "2016-01-01 22:50:14.08 CST" 
R> hhmmss <- format(pt, "%H:%M:%OS") 
R> hhmmss 
[1] "22:50:14.089999" 
R> 

Jetzt haben wir die bevorzugten hh: mm: ss.ff mit Sekundenbruchteilen - mein Standard ist, aber Sie können eine Feinabstimmung:

R> options(digits.secs=2) 
R> hhmmss <- format(pt, "%H:%M:%OS") 
R> hhmmss 
[1] "22:50:14.08" 
R> 

Die Tatsache, dass '09' auf '08' gerundet wurde, ist eines dieser Dinge mit Fließkomma-Mathematik und kann nicht durch die Art der Analyse oder Formatierung geändert werden - es ist eine Einschränkung der zugrunde liegenden Darstellung.

+0

Vielen Dank für Ihre ausführliche Antwort und das Beispiel! – Angel

+0

Gern geschehen und willkommen bei StackOverflow. Sie können diese Antwort jetzt "akzeptieren" (klicken Sie auf das Häkchen) und/oder "upvote" (klicken Sie auf das Dreieck nach oben). –

Verwandte Themen