2016-05-05 11 views
1

Ich habe in einer .csv-Datei in R gelesen, wo die CSV-Datei ursprünglich im Excel-Format gespeichert wurde.Warum kann die Anwendung von as.Date() auf "allgemein" formatierte Excel-Variablen nicht funktionieren?

Während der Vorbereitung für die CSV-Datei habe ich den Inhalt einer neuen Tabelle kopiert und eingefügt, und die Variable Date.Sold wurde in Excel als "allgemein" formatiert.

Ich bin neugierig, warum das Anwenden des Befehls as.Date() auf "allgemein" formatierte Datumswerte (aus Excel) in R nicht funktionieren kann? Es gibt mir eine Reihe von NA-Werten. Wenn ich die Date.Sold Variable in "Datum" in Excel vor dem Lesen in R formatiert hatte, funktioniert der Befehl as.Date() einwandfrei. Warum ist das so? Gibt es eine Möglichkeit, diese "allgemeinen" formatierten Variablen in richtige Daten in R zu lesen?

Einige Informationen über meine Variablen und den Befehl, den ich verwenden:

Str(Date.Sold): $ Date.Sold : Factor w/ 789 levels "-","40965.00",..: 461 463 456 17 

Befehl, die ich verwenden:

A$Date = as.Date(A$Date.Sold, "%d/%m/%Y") 

Antwort

0

Sie müssen das Jahr der Herkunft der Daten in Excel geben: „1899- 12-30 "so sollte Ihre Funktion wie as.Date(date, origin = "1899-12-30") aussehen.

Mit freundlichen Grüßen,

+0

danke, das hat geklappt! :) – hagewhy

1

Ich glaube, Sie könnten die as.Date() Funktion falsch verstehen: Sie müssen immer angeben, in welchem ​​Format das Datum, das Sie zur Zeit konvertieren möchten ist.

Zum Beispiel, wenn Sie das Datum Darstellung in Figur wie sieht diese "2014.02.08" dann müssen Sie es konvertieren mit format = "% d /% m /% Y":

as.Date("02/08/2014",format="%d/%m/%Y") 

Wenn Ihr Datum im allgemeinen Excel-Format ist, müssen Sie das Ursprungsargument verwenden. Zum Beispiel:

as.Date(30829, origin = "1899-12-30") 

In Ihrem Fall könnten Sie brauchen eine Typumwandlung zuerst zu tun, da Sie Faktoren haben:

as.Date(as.integer(as.character(30829)), origin = "1899-12-30") 
+0

danke für die ausführliche Erklärung! :) Ich verstehe den Befehl as.Date() jetzt besser und wie die Argumente in verschiedenen Szenarien eingegeben werden sollten. – hagewhy