有没有一种好方法可以让年份+周数转换为R中的日期?我尝试了以下方法:

> as.POSIXct("2008 41", format="%Y %U")
[1] "2008-02-21 EST"
> as.POSIXct("2008 42", format="%Y %U")
[1] "2008-02-21 EST"


根据?strftime


%Y与世纪的年份。请注意,尽管
原始公历,ISO 8601:2004将其定义为有效
(解释为1BC):请参见http://en.wikipedia.org/wiki/0_(year)。注意
该标准还表示在日历中1582年之前
仅应在有关各方同意的情况下使用。

%U一年中的星期,以小数点(00–53)的形式使用星期日作为
一周的第一天(通常与
年作为第1周的第1天)。美国公约。

最佳答案

这有点像另一个问题you may have seen before。 :)

关键问题是:星期几应指定在哪一天?是一周的第一天吗?最后?那是模棱两可的。我不知道一周是一年中的第一天还是一年中的第七天,或者可能是一年中的第一个星期日或星期一(这是常见的解释)。 (更糟糕的是:这些索引通常看起来是0索引,而不是1索引。)因此,需要指定枚举的星期几。

例如,尝试以下操作:

as.POSIXlt("2008 42 1", format = "%Y %U %u")


%u指示符指定星期几。

附加说明:有关格式转换的各种选项,请参见?strptime。重要的是要注意周的枚举,因为这些周可以在年末分配,并且1的日期含糊不清:是根据周日或星期一还是从一年的第一天开始指定的?所有这些都应在运行R代码的不同系统上指定和测试。我不确定Windows和POSIX系统在其中某些转换中是否使用相同的音调,因此我将进行测试并再次进行测试。

09-08 10:51