Konvertieren einer Zeichenfolge in ein Datum in R
Die Daten, die ich versuche zu konvertieren ist eigentlich ein Datum, aber es wird das Format mmttjjjj ohne Trennung durch Bindestriche oder Schrägstriche. Um die Arbeit mit Daten in R, ich möchte diese formatiert als mm-dd-yyyy oder mm/dd/yyyy.
Ich denke, dass ich möglicherweise verwenden müssen grep()
, aber ich bin mir nicht sicher, wie Sie es verwenden zu formatieren, alle Daten, die in das mmddyyyy format.
as.Date("12252015", format="%m%d%Y")
InformationsquelleAutor Patrick Sajovec | 2015-09-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einen Blick auf
lubridate
mdy
Funktiongibt Sie
Klasse
"POSIXct" "POSIXt"
so ein datetime in R. (Dank Joshua Ulrich für die Korrektur)Könnten Sie
as.Date(mdy(a))
=1994-10-28
um ein Objekt der KlasseDate
.Es gibt Mutationen wie
ymd
unddmy
innerhalblubridate
als gut.Date
eingestuft Objekte sind Termine in R.POSIXct
Objekte werden datetimes, keine Termine.So korrigiert es. Dank
InformationsquelleAutor Rentrop
Aktualisiert: Verbessert mit @Richard Scriven's
colClasses
und einfacheras.Date()
VorschlägeHier sind zwei ähnliche Methoden, die für mich gearbeitet, geht aus einer csv mit
mmddyyyy
format Datum, zu bekommen ist es anerkannt, indem R als ein date-Objekt.Zunächst mit einer einfachen Datei tv.csv:
Methode 1: Alle als string
Einmal in R,
tv.csv
als data frame mit dem Nament
colClasses = 'character')
option bewirkt, dass alle Daten, diecharacter
Datentyp (stattFactor
,int
Arten)Untersuchen, seine ursprüngliche Struktur:
chr
Den
chr
oder Zeichenfolge, die sind dann leicht umgewandelt in ein Datum:as.Date()
führt string zu Datum-Konvertierung%m%d%Y
gibt an, wie interpretieren Sie die Eingabe int$FirstAir
. Diese format-codes, zumindest auf Linux, gefunden werden können, ausgeführt$ man date
die bis bringt das Handbuch auf dendate
Programm, wo es eine Liste von steuerzeichen. Zum Beispiel heißt es%m month (01..12)
Methode 2: Importieren, reparieren Sie dann nur das Datum
Wenn aus irgendeinem Grund Sie nicht wollen, eine Decke import-Konvertierung, um alle Zeichen, zum Beispiel eine Datei mit vielen Variablen und abreisen, R die automatische Typ-Erkennung im Einsatz, aber nur "beheben", die eine date-variable, die diese Methode Folgen.
Einmal in R,
tv.csv
als data frame mit dem Nament
Untersuchen, seine ursprüngliche Struktur:
FirstAir
variable R importiert hat09272015
alsint
Bedeutung integer-und abgesetzt zu werden, die führende null Polsterung , die 0 in 09 ist wichtig, um später zum Zeitpunkt der Konvertierung noch R importiert hat, es ohne. Wir brauchen also, um dieses Problem zu beheben.Diese kann getan werden, in einem einzigen Befehl, aber für die Klarheit, die ich gebrochen habe dies in zwei Schritten. Erste,
sprintf
ist ein Formatier-Funktion0
bedeutet pad mit Nullen8
Art sorgen 8 Zeichen, weil mmttjjjj ist insgesamt 8 Zeichend
wird verwendet, wenn die Eingabe eine Zahl ist, die es derzeit ist, erinnernstr()
Ausgabe behauptet, diet$FirstAir
ist einint
Bedeutung integert$FirstAir
ist die variable, die wir beide einstellen und verwenden, die als EingabeÜberprüfen Sie das Ergebnis:
int
zu einemchr
Art, zum Beispiel9272015
wurde"09272015"
Jetzt ist es ein string oder
chr
geben wir können dann konvertieren, Methode 1.Ergebnis
Machen wir noch einen letzten check:
In beiden Fällen, was waren die ursprünglichen Werte in eine text-Datei sind, haben jetzt erfolgreich umgewandelt in R date-Objekte.
t <- read.csv("tv.csv", colClasses = "character")
. Dies setzt alle Spalten auf Charakter, so dass Sie verlieren nicht die führenden Nullen. Dann stellen Sie das Datum mitt$FirstAir <- as.Date(t$FirstAir, "%m%d%Y")
InformationsquelleAutor clarity123