2014-01-31 2 views
0

У меня есть этот список дат:Найти месяц от числа недель, используя lubridate

library(lubridate) 
my.dates = ymd(c("2013-12-14", "2014-01-18", "2014-01-27", "2013-12-13", "2013-12-29", "2013-12-06")) 

Следующие lubridate::week функции выводит числовой вектор, когда я конвертировать эти даты в неделю цифр:

week(my.dates) 
[1] 50 3 4 50 52 49 

Могу ли я получите lubridate для вывода объекта даты («POSIXct» «POSIXt»), который преобразует my.dates в номер недели и номер года. Поэтому выход должен быть дата объекта (не символ или числовой вектор) отформатирован что-то вроде этого:

[1] "50-2013" "3-2014" "4-2014" "50-2013" "52-2013" "49-2013" 

Я специально заинтересован в решении, которое использует lubridate.

+0

Я не думаю, что вы можете сделать это, не зная год за каждую неделю. Не говоря уже о том, что недели могут оседлать конец месяца/месяц начала. Почему вы пытаетесь это сделать? У вас где-нибудь есть неделя № без дополнительной информации? – BrodieG

+0

Я согласен с BrodieG. Вы не можете изменять число недель в месяцах без дополнительной информации. Вы * можете *, но напрямую изменить свои исходные даты на месяцы, если это работает для ваших целей. – Dinre

+0

См. Отредактированный вопрос, который учитывает ваши комментарии. – luciano

ответ

3

В ответ на комментарии к вопросу вопрос изменился несколько раз, но на данный момент запрошенный ввод - my.dates, а выход - форме недельного года (а не как описано в вопросе вопроса).

Для преобразования my.dates в формат неделю года попробовать следующую команду, где week и year являются lubridate функции:

> paste(week(my.dates), year(my.dates), sep = "-") 
[1] "50-2013" "3-2014" "4-2014" "50-2013" "52-2013" "49-2013" 

Выходной образец в вопросе не использовать ведущие нули на неделю, но если ведущие нули были желательные на неделю, то:

> sprintf("%02d-%d", week(my.dates), year(my.dates)) 
[1] "50-2013" "03-2014" "04-2014" "50-2013" "52-2013" "49-2013" 

Обратите внимание, что требование о том, что выход будет объект класса POSIXt и быть в формате недельных года противоречивы, так как формат его представления в виде символьный объект и не является свойством самих объектов класса POSIXt. Также, как отмечается в комментариях к этому вопросу, недельный год не однозначно идентифицирует дату.

Смежные вопросы