Функция годовой недели в Циббле возвращает нежелательное поведение - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь преобразовать столбец даты с пропущенными значениями в формат год-неделя с tsibble. Выполнение этого возвращает либо в случае ошибок синтаксического анализа, либо в виде числовых c результатов.

Окончательный результат должен выглядеть следующим образом: 2020 W1, 2020 W6.

Есть ли способ решить эту проблему с помощью tsibble пакет? Как ни странно, функция yearmonth этого пакета работает также с NA и пустыми значениями.

library(tsibble)
library(lubridate)

x <- c("2020-01-01", "", "2020-02-06")

yearweek(x)
# Output: fails

ifelse(x == "", "", yearweek(ymd(x)))
# Output: "18260" "" "18295"

# Desired Output: "2020 W1", "", "2020 W6".

1 Ответ

0 голосов
/ 06 февраля 2020

Вы можете сделать это в базе R:

format(as.Date(x), "%Y W%V")
#[1] "2020 W01" NA         "2020 W06"

Когда вы используете это в yearweek из tsibble, возвращается ошибка

library(tsibble)
yearweek(as.Date(x))

Ошибка в yrs [mth_wk == "12_01"] <- yr [mth_wk == "12_01"] + 1: NA не допускаются в присвоениях с подпиской </p>

Поскольку функция yearweek возвращает вывод класс "yearweek" "Date" не допускает NA значений в нем или пустых значений (""), потому что они не относятся к классу "yearweek" "Date". Взломать вместо этого изменить значения на символ.

x1 <- as.Date(x)
inds <- !is.na(x1)
x2 <- character(length = length(x1))
x2[inds] <- as.character(yearweek(x1[inds]))
x2
#[1] "2020 W01" ""         "2020 W06"
...