Änderung Datum-format in R
Ich habe einige sehr einfache Daten in R, muss das Datumsformat geändert:
date midpoint
1 31/08/2011 0.8378
2 31/07/2011 0.8457
3 30/06/2011 0.8147
4 31/05/2011 0.7970
5 30/04/2011 0.7877
6 31/03/2011 0.7411
7 28/02/2011 0.7624
8 31/01/2011 0.7665
9 31/12/2010 0.7500
10 30/11/2010 0.7734
11 31/10/2010 0.7511
12 30/09/2010 0.7263
13 31/08/2010 0.7158
14 31/07/2010 0.7110
15 30/06/2010 0.6921
16 31/05/2010 0.7005
17 30/04/2010 0.7113
18 31/03/2010 0.7027
19 28/02/2010 0.6973
20 31/01/2010 0.7260
21 31/12/2009 0.7154
22 30/11/2009 0.7287
23 31/10/2009 0.7375
Eher als %d/%m/%Y
möchte ich es in den standard-R-format von %Y-%m-%d
Wie kann ich diese ändern? Ich habe versucht:
nzd$date <- format(as.Date(nzd$date), "%Y/%m/%d")
Aber, dass gerade schneiden Sie das Jahr und die zusätzlichen Nullen an den Tag:
[1] "0031/08/20" "0031/07/20" "0030/06/20" "0031/05/20" "0030/04/20"
[6] "0031/03/20" "0028/02/20" "0031/01/20" "0031/12/20" "0030/11/20"
[11] "0031/10/20" "0030/09/20" "0031/08/20" "0031/07/20" "0030/06/20"
[16] "0031/05/20" "0030/04/20" "0031/03/20" "0028/02/20" "0031/01/20"
[21] "0031/12/20" "0030/11/20" "0031/10/20" "0030/09/20" "0031/08/20"
[26] "0031/07/20" "0030/06/20" "0031/05/20" "0030/04/20" "0031/03/20"
[31] "0028/02/20" "0031/01/20" "0031/12/20" "0030/11/20" "0031/10/20"
[36] "0030/09/20" "0031/08/20" "0031/07/20" "0030/06/20" "0031/05/20"
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Schritte hier:
Nun die
newdate
Spalte muss vom TypDate
.format()
oderstrftime()
:Ein vollständigeres Beispiel:
Den Unterschied zwischen den Spalten drei und vier ist der Typ:
newdate
ist KlasseDate
in der Erwägung, dasstxtdate
Charakter ist.str(x)
zwischen jeder Zeile, so dass Sie sehen können, die Unterschiede in Aktion.In der obigen Stück code, es gibt zwei Fehler. Zuerst von allen,, wenn Sie Lesen
nzd$date
innenas.Date
Sie nicht zu erwähnen, in welches format Sie die Einspeisung derdate
. Also, es versucht es den default format, um es zu Lesen. Wenn Sie sehen, diehelp
doc,?as.Date
sehen SieDer zweite Fehler ist: auch wenn Sie es Lesen möchten in
%Y-%m-%d
- format, im innerenformat
Sie schrieb"%Y/%m/%d"
.Nun, den richtigen Weg, es zu tun ist:
Können Sie auch das
parse_date_time
Funktion aus derlubridate
Paket:parse_date_time
gibt eine POSIXct Objekt, so verwenden wiras.Date
um ein date-Objekt. Das erste argumentparse_date_time
gibt einen aktuellen Vektor, der das zweite argument legt die Reihenfolge fest, in welchem format Auftritt. Dieorders
argument machtparse_date_time
sehr flexibel.Nach der Lektüre Ihrer Daten über eine
textConnection
, Folgendes scheint zu funktionieren:as.POSIXct(otherStuffHere)
wird wahrscheinlich funktionieren. Vielen Dank für diesen link, ich war mir nicht bewusst, jene Fragen, die durch die Hadley.Dies ist wirklich einfach mit dem Paket-lubridate. Alles, was Sie tun müssen ist, sagen, R in welchem format Ihr Termin ist bereits in. Es konvertiert Sie in das standard-format
nzd$date <- dmy(nzd$date)
das ist es.
Mit einer Zeile zum konvertieren der Daten zu am günstigsten gelegene format:
Ich glaube, dass
ist ausreichend.