Mit dem folgenden Code i Daten in Jahren und dieses Jahr in Wochen geteilt bekommen: an diesem AusgangSplit Termine pro Jahr und Woche und korrekte Woche Anzahl pro Jahr
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)))
Basierend i mehrere Berechnungen getan haben. Erst als ich einige Daten wurde Plotten bemerkte ich, dass dieses Verfahren nicht perfekt funktioniert:
>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"
...
Hier 2011-01-01 und 2011-01-02 ein Teil der 52th Woche des Jahres 2010, aber wegen der Spaltung zuerst nach Jahr werden die Daten der 52. Woche von 2011 zugeordnet. Das gleiche Problem tritt in 2012-12-31 auf, dieses Datum ist Teil der ersten Woche von 2013, wird aber der ersten Woche von 2012 zugewiesen, weil ich die Funktion auf jedes Jahr getrennt anwende.
Aufteilen nach Jahr und dann aufteilen jedes Jahr in Wochen geben mir das Format, das ich brauche, aber die Woche-Jahr-Beziehung kann nicht korrekt sein. Um die richtige Wochennummer erhalten kann ich geteilt zuerst von Woche und als nach Jahren:
splitByWeek = split(dates, isoweek(dates))
splitWeeksByYear = lapply(splitByWeek, function(x) split(x, year(x)))
Aber das Format ist nicht das, was ich brauche:
>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"
Was ist der beste Weg, um die richtigen Wochen im Format ich brauche: Liste von $ Jahr $ WocheNum? (vielleicht das zweite Ergebnis umwandeln oder ganz anders machen?)
'Format (Termine , "% Y-% U") '? –