2015-05-08 8 views
7

Wenn ich ein Datum habe, das ich mit der as.Date-Funktion konvertiert habe, z. "2015-01-01" Wie kann ich herausfinden, welches Datum als Referenz für den Ursprung verwendet wird? Und ja, ich habe versucht, ?Date, und versuchte mit der Standard-Herkunft, aber bekam Tage im Jahr 1945. Ich würde gerne wissen, wie das im Allgemeinen tun, so muss ich nicht jedes Mal manuell überprüfen, wenn ich Operationen an Daten.Wie finde ich "Ursprung" eines Datums in R

+0

Gefällt mir? 'as.Date (" 2015-01-01 ") - as.numeric (as.Date (" 2015-01-01 "))'. Können Sie das Datumsobjekt, das den üblichen Ursprung hat, "dput"()? Können Sie genau zeigen, welchen Code Sie ausgeführt haben? – MrFlick

+6

Von '? Date':" Daten werden als die Anzahl der Tage seit 1970-01-01 dargestellt. " Also, wenn es sich um ein Klassenobjekt "Date" handelt, ist das der Ursprung. – Gregor

+0

Das heißt, ein nicht standardmäßiger Ursprung wird nicht gespeichert, sondern nur in den üblichen Ursprung konvertiert: 'as.numeric (as.Date (0, origin = as.Date (" 2015-05-08 "))) 'gibt 16563, das gleiche wie 'as.numeric (Sys.Date())' – Gregor

Antwort

4

Wie in der Dokumentation beschrieben, erstellt das Argument origin kein entsprechendes Attribut im Objekt Date; Es dient lediglich dazu, die Eingabe von Ganzzahlen zu erleichtern (z. B. von Excel, SAS usw., die unterschiedliche Ursprünge verwenden).

A dput bestätigt, dass Date s sind nur alte Zahlen:

d <- as.Date("2000-01-01") 
dput(d) 
# structure(10957, class = "Date") 

(I str(d) stattdessen verwenden würde, aber das scheint manchmal Informationen zu verbergen.)

5

R Paket lubridate eine Lösung hat. lubridate::origin wird zurückgeben, welcher Ursprung für Sie ist.

Verwandte Themen