0

我尝试将缺少值的日期列转换为带有tsibble. 这样做会返回解析失败或数字结果。

最终输出应如下所示: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".
4

1 回答 1

0

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

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

当您从中使用它时yearweektsibble它会返回错误

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

yrs[mth_wk == "12_01"] <- yr[mth_wk == "12_01"] + 1 中的错误:下标分配中不允许使用 NA

由于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"
于 2020-02-06T08:23:37.327 回答