2013-11-26 5 views
5

Ich versuche meine Daten in ein anderes Datumsformat zu konvertieren.Wie konvertiert man JJJJ-MM-TT zum Tag des Jahres in R?

beispiel von 2010-12-31 zu 2.010.365

Ich habe versucht, Code unten, aber es gab mir etwas anderes (zum Beispiel 359 360 361 362 363 364 365). Ich habe meine Daten vom Jahr 2000 bis 2010.

dayofyear <- strptime(date, format="%Y-%m-%d")$yday + 1 

Könnte jemand bitte helfen?

Vielen Dank.

+0

opss ... yup. Entschuldigen Sie sich dafür. – Sofea

Antwort

5
d <- as.POSIXlt("2010-12-31", format="%Y-%m-%d") 
d$yday + 1 
# 365 
paste0(1900 + d$year, d$yday + 1) 
# 2010365 

Update: aus txt-Datei zu lesen:

t <- read.table(file = "file.txt", header = TRUE, sep = ";", dec = ",") 
    # make settings according to file format 

Dann c Sie Ein Zugriff auf den Spaltenwert von t$column_name oder t[,column_number], und Sie ersetzen die "2010-12-31" durch einen dieser Ausdrücke und das ist es.

+0

Danke @Tomas. Versuchen herauszufinden, wie man eine txt-Datei in den Code einliest, da alle Daten vom 01.01.2001 bis zum 31.12.2010 in einer txt-Datei vorliegen. Übrigens sollte der 2010-12-31 2010365 sein. :) – Sofea

+0

der POSIXlt-Standard ist 0-basierte Indexierung statt 1 basiert, so 2010-01-01 ist der 0. Tag des Jahres. – Justin

+0

@Sofea Lesen von Text-Datei ist sehr einfach, aktualisiert meine Antwort – TMS

5
library(lubridate) 
date <- ymd("2010-12-31") 
paste0(year(date), yday(date)) 
# [1] "2010365" 
+0

Vielen Dank @Henrik. – Sofea

+0

Gut zu helfen! Prost. – Henrik

+5

Es ist möglich, ohne eine neue Bibliothek zu installieren, siehe meine Antwort. – TMS

16

In Basis r:

format(as.Date('2010-12-31'), format='%Y%j') 

Oder:

strftime('2010-12-31', format='%Y%j') 
Verwandte Themen