Ich arbeite mit .csv Daten, die aus Teradata exportiert wurde. Mehrere Spalten waren ursprünglich Zeitstempel mit Zeitzonen, daher möchte ich nach dem Laden der .csv in R diese Spalten (die als Strings geladen sind) in POSIXlt oder POSIXct konvertieren. Ich benutze strptime
, aber das Format der Zeitzone aus der .csv-Datei stimmt nicht überein, was strptime
erwartet. Zum Beispiel erwartet es aber die .csv hat das Format -04:00
wo ein Doppelpunkt die Stunden und Minuten trennt.Verwenden von strptime% z mit speziellen Zeitzone Format
Ich kann den Doppelpunkt entfernen, aber das ist ein zusätzlicher Schritt und Komplikation, die ich vermeiden möchte, wenn möglich. Gibt es eine Möglichkeit, strptime
mitzuteilen, ein anderes Format für die Zeitzone zu verwenden (%z
)? Hier
ein Beispiel:
## Example data:
x <- c("2011-10-12 22:17:13.860746-04:00", "2011-10-12 22:17:13.860746+00:00")
format <- "%Y-%m-%d %H:%M:%OS%z"
## Doesn't work:
strptime(x,format)
## [1] NA NA
## Ignores the timezone:
as.POSIXct(x)
## [1] "2011-10-12 22:17:13 EDT" "2011-10-12 22:17:13 EDT"
## Remove the last colon:
x2 <- gsub("(.*):", "\\1", x)
x2
## [1] "2011-10-12 22:17:13.860746-0400" "2011-10-12 22:17:13.860746+0000"
## This works, but requires extra processing (removing the colon)
strptime(x2,format)
## [1] "2011-10-12 22:17:13" "2011-10-12 18:17:13"
Also ich bin auf der Suche dieses letzte Ergebnis zu erzielen, so etwas wie strptime(x,"%Y-%m-%d %H:%M:%OS%zz")
verwenden, wo %zz
ist ein Brauch Ausdruck für die Zeitzone, die das -04:00
Format erkennt. Oder %zH:%zM
könnte noch besser sein.
Wenn dies nicht möglich ist, hat jemand eine glatte/flexible Funktion zum Konvertieren von Zeichenfolgen (verschiedener Formate) in Daten für mehrere Spalten einer data.frame/data.table?
Es ist 2016 und die Welt, die sich immer noch damit zu beschäftigen ... – sehe