虽然我找到了这个问题的解决方案,但在我的情况下,代码只返回NA
s。怎么了?下面的工作示例:
df <- data.frame("date" = seq(as.Date("2015/1/1"), as.Date("2016/1/1"), by = "day"))
df$week <- format(df$date, "%W-%Y")
str(df)
# week back into proper date
df$week_date <- as.Date(paste0("01-", df$week), format = "%w-%W-%Y")
str(df)
@cory:你的答案是正确的,让我找到了解决方案。strptime
的R文档显示:
%w
工作日为十进制数(0-6,星期日为0(。
%W
以十进制数字(00-53(表示的一年中的一周,使用星期一作为一周的第一天(通常是一年中的第一个星期一第1周的第1天(。英国公约。
因此,这在paste0
之后如预期一样工作,只有个位数:
df <- data.frame("date" = seq(as.Date("2014/1/1"), as.Date("2016/1/1"), by = "day"))
df$week <- format(df$date, "%W-%Y")
str(df)
# week back into proper date
df$week_date <- as.Date(paste0("1-", df$week), format = "%w-%W-%Y")
str(df)
View(df)
值得注意的是,任何新年的第一个星期一之前的几天都会进入无人区,因此需要单独处理。