2013-03-16 15 views
9

Mam wykaz dat, takie jak:ekstrakt roku od daty

library(lubridate) 
my.dates <- c("03-01-2006", "28-01-2006", "12-01-2008", "02-02-2006", "03-03-2008") 
my.dates <- dmy(my.dates) 

muszę wyodrębnić, liczba dni w roku z każdym dniem, jak poniżej, gdzie 01 stycznia jest dniem 1:

day.number <- c(3, 28, 12, 33, 62) 

Miałem dobre polowanie wokół Google i SO, ale nie mogę znaleźć łatwego sposobu na zrobienie tego. Pomóż docenić, dzięki.

+0

@DidzisElferts To * nie * duplikat - kluczowym zagadnieniem tutaj znajduje się ** lubridate ** reprezentacja dat, która znacznie różni się od rozwiązań opartych na "POSIXt" w duplikacie, który proponujesz. Głosowałem, aby pozostawić otwarte w kolejce do przeglądu. –

Odpowiedz

16

można użyć yday funkcję z lubridate ponieważ używasz już go:

> yday(my.dates) 
# [1] 3 28 12 33 63 
+0

Dzięki. Oczekiwano przeprosin za brakujące pytanie. Używam 'lubridate', więc pozostanie przy tym pakiecie. – luciano

14

Spróbuj POSIXlt i jego attributes(my.dates)

my.dates = as.POSIXlt(my.dates,format="%d-%m-%Y") 
my.dates$mday 
[1] 3 28 12 2 3 
my.dates$yday 
[1] 2 27 11 32 62 
+0

Zauważ, że wartości yday są oparte na 0. –