2017-03-18 4 views
0

Ich habe einige Ganzzahlen, die Stunden darstellen, und ich möchte sie in Daten umwandeln und dann das Jahr und den Monat extrahieren.Wie konvertiert man Stunden in normale Daten?

Zum Beispiel steht 1620936 für 1984-12-01 00:00:00 und 1620960 steht für 1984-12-02 00:00:00. Ich frage mich, wie ich das in R. machen kann. Vielen Dank.

Time = c(1620936,1620960,1620984,1621008,1621032,1621056,1621080,1621104) 

Antwort

2

es scheint, dass die Stunden von 1. Januar 1800 gemessen werden, dies so versuchen:

toDate <- function(x) as.Date("1800-01-01") + x/24 

dat <- toDate(Time) 
sapply(c(year="%Y", month="%m", day="%d"), function(fmt) as.numeric(format(dat, fmt))) 

diese Matrix geben:

 year month dayt 
[1,] 1984 12 1 
[2,] 1984 12 2 
[3,] 1984 12 3 
[4,] 1984 12 4 
[5,] 1984 12 5 
[6,] 1984 12 6 
[7,] 1984 12 7 
[8,] 1984 12 8 

Die letzte Zeile abwechselnd geschrieben werden könnte:

with(unclass(as.POSIXlt(dat)), cbind(year = year+1900, month = mon+1, day = mday)) 

oder

library(chron) 

do.call("cbind", month.day.year(dat)) 
+0

Vielen Dank. Die Stunden werden ab 1800-01-01 gemessen. –

Verwandte Themen