从等年、等周和日值中获取日期

Get a date from isoyear, isoweek, and wday values

是否有任何函数可以提供来自 isoyearisoweekwday 的日期价值观?

例如:

isoyear_val <- 2020
isoweek_val <- 1
wday_val <- 2

x <- magic_function(isoyear_val, isoweek_val, wday_val)
# x is "2019-12-30"

我知道,使用 Lubridate,可以为 week():

等函数设置日期
x <- ymd("2012-03-26")
week(x) <- 30
# x is "2012-07-23"

但我没有发现任何类似的 ISO 值。

我们可以使用 make_yearweek 来自 tsibble

library(tsibble)
as.Date(make_yearweek(year = isoyear_val, week = isoweek_val))
[1] "2019-12-30"

不清楚 'wday_val',如果它意味着 week_start

as.Date(make_yearweek(year  = isoyear_val, week = isoweek_val, 
      week_start = wday_val))
[1] "2019-12-31"

@uwe 有一个名为 ISOweek 的包,您可以尝试以下操作。该软件包具有根据 ISO 8601 处理一年中的星期几和工作日的辅助函数。

library(ISOweek)

ISOweek2date(
  sprintf(
    "%d-W%02d-%d",
    isoyear_val,
    isoweek_val,
    wday_val
  )
)

输出

[1] "2019-12-31"