は 2 桁の週番号の形式yyyy-wwで週の日付データを持っています。までwwのデータ範囲。週数の規則は ISO 8601 であり、ウィキペディアの「週数」の記事でわかるように、1 年間で 53 週に達することもあります。たとえば、このシステムでは 2009 年は 53 週でした。この ISO 8601 カレンダーの週番号を参照してください。(他の年を参照してください。Wikipedia の記事によると、53 週目はかなりまれです。)2007-012010-30
基本的に、週の日付を読み込んでDateオブジェクトに変換し、これを別の列に保存したいdata.frame. テストとして、Dateオブジェクトを でyyyy-wwフォーマットに再変換しformat([Date-object], format = "%Y-%W"たところ、 でエラーが発生しました2009-53。その週は によって日付として解釈されませんR。(ISO 8601 標準で) 第 53 週を持たない他の年は のように正常に変換されますが、同様に (ISO 8601 標準で) 第 53 週を持たない2007-53他の年も次のように失敗するため、これは非常に奇妙です。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 形式で週番号を受け入れるにはどうすればよいかということです。
注: この質問は、私が数時間苦労してきた問題を要約したものです。このようなさまざまな役立つ投稿を検索して見つけましたが、問題を解決するものはありませんでした。