R +在YYYYWW格式中添加n周数

S28*_*951 3 r date

我试图将52周添加到YYYYWW格式的日期变量.我的初始日期是201616(2016年和第16周),我想在这个日期增加52周,预计产量为201715.

我尝试了几件但没有运气,这是我到目前为止所尝试的

date <- as.Date(as.character(201616), "%Y%W")
seq(date, by = "1 week", length.out = 52)
Run Code Online (Sandbox Code Playgroud)

我非常感谢您的意见.非常感谢您的时间!

Pie*_*nte 6

问题是2016年第16周有7天.您需要指定一天将其转换为可用于添加天数的日期.在下面的代码中%u表示一周的第一天.然后,您可以为此号码添加52周.

date1 <- as.Date("201616 1", format = "%Y%U %u")
format(date1+(52*7), "%Y%U")
[1] "201716"
Run Code Online (Sandbox Code Playgroud)


Jon*_*oll 5

我不确定是否as.Date可以采取%Y%W并产生一个独特的价值.它似乎充满date了当前的月和日.如果我们在第16周指定一个日期:

date <- as.Date("2016-04-23")
Run Code Online (Sandbox Code Playgroud)

并以您的风格格式化

format(date, "%Y%W")
[1] "201616"
Run Code Online (Sandbox Code Playgroud)

我们可以从中生成52个值的序列

newdate_seq <- seq(date, by = "1 week", length.out = 52)
Run Code Online (Sandbox Code Playgroud)

并将这些更改为您的格式

format(newdate_seq, "%Y%W")
 [1] "201616" "201617" "201618" "201619" "201620" "201621" "201622" "201623" "201624" "201625" "201626" "201627"
[13] "201628" "201629" "201630" "201631" "201632" "201633" "201634" "201635" "201636" "201637" "201638" "201639"
[25] "201640" "201641" "201642" "201643" "201644" "201645" "201646" "201647" "201648" "201649" "201650" "201651"
[37] "201652" "201701" "201702" "201703" "201704" "201705" "201706" "201707" "201708" "201709" "201710" "201711"
[49] "201712" "201713" "201714" "201715"
Run Code Online (Sandbox Code Playgroud)

结束你期望的地方.

仅供参考,下次再尝试突出显示导致您认为"没有运气"的原因 - 您产生了哪些错误,您产生了什么结果以及它们与您预期产生的结果有何不同?只需打印date变量就会发现我没有按照您的预期进行操作.