Преобразовать столбец года и недели в месяц R

Я хочу определить месяц на основе года и номера недели. Эта проблема уникальна, поскольку в данных примерах отсутствует информация о дне недели, необходимая для преобразования объекта год / неделя в дату, преобразования номера недели в дату.

year <- c("2017", "2017", "2018")
week <- c("37", "53", "01")
month <- lubridate::month(as.Date(paste0(year, "-", week), format = "%Y-%V"))

> month
[1] 9 9 9

По какой-то причине это возвращает 9 для каждого элемента в моем векторе. Сентябрь - правильный месяц для первого наблюдения, но это не может быть так для остальных двух.

Ожидаемый результат:

> month
[1] 9 12 1

Изменить: Оказывается, что эта задача вряд ли будет решена без знания дня недели. Я постараюсь найти обходной путь к году / дате, чтобы вообще избежать этой проблемы.

1 ответ

Попробуй это:

> year <- c(2017, 2017, 2018)
> week <- c(37, 53, 01)
> month <- lubridate::month(as.Date(paste0(year, "-", week, "-", 10), format = "%Y-%U-%u"))
> month
 [1] 9 NA 1

Причина, по которой вы получаете АН здесь, потому что она будет рассчитывать месяцы до 52-й недели.

Другие вопросы по тегам