我有星期日期数据,格式为两位数的星期数yyyy-ww
。ww
数据跨度2007-01
为2010-30
。周计数约定是 ISO 8601,正如您在 Wikipedia 的“周数”文章中所见,一年中偶尔会达到 53 周。例如,该系统 2009 年有 53 周,请参阅此 ISO 8601 日历中的周数。(参见其他年份;根据维基百科的文章,第 53 周相当罕见。)
基本上我想读取周日期,将其转换为Date
对象并将其保存到data.frame
. 作为测试,我通过 将Date
对象重新转换为yyyy-ww
格式format([Date-object], format = "%Y-%W"
,这在2009-53
. 那一周不能被解释为日期R
。这很奇怪,因为没有第 53 周(在 ISO 8601 标准中)的其他年份转换得很好,例如2007-53
,而其他也没有第 53 周(在 ISO 8601 标准中)的年份也失败了,例如2008-53
以下最小示例演示了该问题。
最小的例子:
dates <- c("2009-50", "2009-51", "2009-52", "2009-53", "2010-01", "2010-02")
as.Date(x = paste(dates, 1), format = "%Y-%W %w")
# [1] "2009-12-14" "2009-12-21" "2009-12-28" NA "2010-01-04"
# [6] "2010-01-11"
other.dates <- c("2007-53", "2008-53", "2009-53", "2010-53")
as.Date(x = paste(other.dates, 1), format = "%Y-%W %w")
# [1] "2007-12-31" NA NA NA
问题是,我如何R
才能接受 ISO 8601 格式的周数?
注意:这个问题总结了我几个小时以来一直在努力解决的一个问题。我已经搜索并找到了各种有用的帖子,例如this,但没有一个能解决问题。