首页 > 解决方案 > 如何将 YearWeek 格式转换为日期?

问题描述

我的数据:c("202001", "202002")

它显示年份和周数。我需要将一周的第一天添加到我的数据中。

我怎么才能得到它?

期望的输出:2020-01-062020-01-13

代码应该工作的原始数据

c(
"202001", "202002", "202003", "202004", "202005", "202006", "202007", 
"202008", "202009", "202010", "202011", "202012", "202013", "202014", 
"202015", "202016", "202017", "202018", "202019", "202020", "202021", 
"202022", "202023", "202024", "202025", "202026", "202027", "202028", 
"202029", "202030", "202031", "202032", "202033", "202034", "202035", 
"202036", "202037", "202038", "202039", "202040", "202041", "202042", 
"202043", "202044", "202045", "202046", "202047", "202048", "202049", 
"202050", "202051", "202052", "202053", "202101", "202102", "202103")```

标签: rdatetime

解决方案


您可以使用 base-ras.Date并指定格式来执行此操作。

一年中的一周

  • 美国惯例:以十进制数 (00–53) 表示的一年中的星期,使用星期日作为一周的第一天(通常将一年中的第一个星期日作为第一周的第一天):%U

  • 英国惯例:以十进制数字 (00–53) 表示的一年中的第几周,使用星期一作为一周的第一天(通常将一年中的第一个星期一作为第 1 周的第 1 天):%W

  • ISO 8601 定义:一年中的第几周为 ISO 8601 中定义的十进制数 (01-53)。如果包含 1 月 1 日的那一周(从星期一开始)在新的一年中有四天或更多天,则将其视为第 1 周。否则,它是上一年的最后一周,下一周是第 1 周:%V它被接受但在输入时被忽略。
    请注意,还有一个基于周的年份 ( %Gand %g),%V因为它可能与日历年 ( %Yand %y) 不同。

数字工作日

  • 工作日为十进制数(1-7,星期一为 1):%u
  • 工作日为十进制数(0-6,星期日为 0):%w

我附加 1 以创建一个引用一年中第一天的日期字符串,然后在调用as.date转换时使用 strptime 代码指定格式。

美国惯例的例子:

dateList <-  c("202001", "202002")

dateList <- paste0(dateList, "1")

dateList <- as.Date(dateList , format = "%Y%W%u")

有关格式的更多信息,请访问: https ://www.rdocumentation.org/packages/base/versions/3.6.2/topics/strptime


推荐阅读