Tsibble year week 函数 returns 出现不良行为

Tsibble year week function returns in undesired behaviour

我尝试使用 tsibble 将具有缺失值的日期列转换为年-周格式。这样做 returns 无论是解析失败还是数字结果。

最终输出应该是这样的: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".

您可以在 base R 中执行此操作:

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

当你在 yearweek 中使用它时 tsibble 它 returns 一个错误

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

Error in yrs[mth_wk == "12_01"] <- yr[mth_wk == "12_01"] + 1 : NAs are not allowed in subscripted assignments

由于 yearweek 函数 returns class "yearweek" "Date" 的输出,它不允许 NA 值或空值("") 因为他们不属于 class "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"