我在R中有一個數據框,並將其轉換爲日期。我知道我要挑了一年的一週,所以我在2014年和1。這個轉換爲日期固定的值的天似乎很簡單:將週數轉換爲日期
as.Date(paste(2014,df$Week,1,sep=""),"%Y%U%u")
但如果一週是大於這個代碼只能9.第1周 - 9日返回NA。如果我將該周更改爲01,02,03 ...它仍然會返回NA。
任何人都可以看到我缺少的東西嗎?
我在R中有一個數據框,並將其轉換爲日期。我知道我要挑了一年的一週,所以我在2014年和1。這個轉換爲日期固定的值的天似乎很簡單:將週數轉換爲日期
as.Date(paste(2014,df$Week,1,sep=""),"%Y%U%u")
但如果一週是大於這個代碼只能9.第1周 - 9日返回NA。如果我將該周更改爲01,02,03 ...它仍然會返回NA。
任何人都可以看到我缺少的東西嗎?
as.Date
將1至9調用爲NA,因爲它需要兩位數字作爲週數,並且無法正確解析它。
爲了解決這個問題,加入一些 - 的東西分裂:
as.Date(paste(2014, df$Week, 1, sep="-"), "%Y-%U-%u")
另一種解決方案是使用日期計算從lubridate
包:
lubridate::ymd("2014-01-01") + lubrdiate::weeks(df$Week - 1)
的-1
是必要的,因爲2014-01-01
是已經在第1周。換句話說,我們想要
df$Week == 1
映射到2014-01-01
(這是ymd("2014-01-01") + weeks(1-1)
)df$Week == 2
映射到2014-01-08
(這是ymd("2014-01-01") + weeks(2-1)
)
的可能的複製[變換年/周向中的R日期對象(https://stackoverflow.com/questions/45549449/transform-year-week-to-date-object-in-r) – Uwe
當心關於如何計算每年每週的不同公約。請參閱[此答案](https://stackoverflow.com/a/45587644/3817004)進行討論。 – Uwe