用下面的代碼我分裂日期,年裂棗,這幾年到周:按年份和周,今後每年正確的週數
library(lubridate)
start = as.Date('2002-01-01')
end = as.Date('2017-01-01')
dates = sample(seq(as.Date('2002-01-01 00:00:00'), as.Date('2017-04-01 00:00:00'), by="day"), end-start,replace = FALSE)
splitByYears = split(dates, year(dates))
splitYearsByWeeks = lapply(splitByYears, function(x) split(x, isoweek(x)))
在此基礎上輸出我做了幾個計算。只有當我正在策劃一些數據,我注意到,這個過程並不完美:
>splitYearsByWeeks
...
$`2011`$`52`
[1] "2011-01-01" "2011-01-02" "2011-12-26"
$`2012`
$`2012`$`1`
[1] "2012-12-31" "2012-01-02" "2012-01-06" "2012-01-08"
...
這裏2011-01-01 2011-01-02和2010年第52周的一部分,但由於拆分的第一日期分配到2011年第52周。同樣的問題出現在2012年12月31日,這個日期是2013年第一週的一部分,但分配到2012年的第一週,因爲我每年單獨應用該功能。
按年份拆分並且每年拆分成幾周給我我需要的格式,但是週年關係不可能是正確的。爲了得到正確的週數,我可以先通過一週,比去年拆分:
splitByWeek = split(dates, isoweek(dates))
splitWeeksByYear = lapply(splitByWeek, function(x) split(x, year(x)))
但格式不正是我需要:
>splitWeeksByYear
...
$`53`
$`53`$`2004`
[1] "2004-12-31" "2004-12-29" "2004-12-28"
$`53`$`2005`
[1] "2005-01-01"
$`53`$`2009`
[1] "2009-12-28"
$`53`$`2015`
[1] "2015-12-30"
$`53`$`2016`
[1] "2016-01-03"
什麼是獲得的最好辦法正確的星期在我需要的格式:$ year $ weekNum? (也許轉換第二個結果或完成其他方式嗎?)
'格式(日期,「%Y-%U」)'? –