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"
我尝试使用 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"