2017-06-19 5 views
3

YYYYWW書式の日付変数に52週間を追加しようとしています。私の最初の日付は201616(2016年と16週)で、この日に52週を追加しようとしていて、予想される出力は201715です。R + YYYYWW書式にn週を追加する

私は何かを試みましたが、

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

ご迷惑をおかけ致します。多くのあなたの時間をありがとう!

答えて

4

as.Dateには%Y%Wを入力して固有の値を生成することはできません。現在の月と日にdateが入力されているようです。代わりに、もし私たちは16日の週に日付を指定:

date <- as.Date("2016-04-23") 

と、あなたのスタイル

format(date, "%Y%W") 
[1] "201616" 

に、我々はこの

newdate_seq <- seq(date, by = "1 week", length.out = 52) 

と変化から52の値のシーケンスを生成することができることをフォーマットをあなたのフォーマットにもあてはまるもの

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" 

は、あなたが期待した場所で終了します。

次回は、何が原因でエラーが発生したのか、どのような結果が出てきたのか、どのように生成されるのだろうと思ったのかを強調してみてください。変数dateを単に印字するだけで、期待したことをしていないことが分かりました。

6

問題は、週#162016に7日間あります。日を指定して、日数を加算するために使用できる日付に変換する必要があります。以下のコード%uは、週の最初の曜日を示します。この番号に52週間を追加することができます。

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

この回答に '%U'(日曜日の米国条約を開始)がある間、OPは'%W'(月曜日から始まる週)を使用していることを指摘しておく価値があります。 –

関連する問題