【问题标题】:Get a date from isoyear, isoweek, and wday values从 iso 年、iso 周和天值获取日期
【发布时间】:2022-01-14 20:26:52
【问题描述】:

是否有任何函数可以根据 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 值。

【问题讨论】:

  • "2019-12-30" 真的是 2020、1、2 输入值的正确答案吗?
  • @r2evans 是的,它遵循 ISO 8601 约定。

标签: r date lubridate


【解决方案1】:

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

library(ISOweek)

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

输出

[1] "2019-12-31"

【讨论】:

  • 这正是我需要的答案。非常感谢!
【解决方案2】:

我们可以使用来自tsibblemake_yearweek

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"

【讨论】:

    猜你喜欢
    • 2015-01-11
    • 1970-01-01
    • 2016-01-11
    • 2018-02-25
    • 2023-03-06
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多