Преобразовать столбец года и недели в месяц 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-й недели.