从等年、等周和日值中获取日期
Get a date from isoyear, isoweek, and wday values
是否有任何函数可以提供来自 isoyear、isoweek 和 wday 的日期价值观?
例如:
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"
是否有任何函数可以提供来自 isoyear、isoweek 和 wday 的日期价值观?
例如:
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"