2016-10-11 2 views
0

Le dernier jour de 2017 (2017-12-31) tombe le dimanche, ce qui signifie que la dernière semaine de l'année ne contient qu'un jour si je considère le dimanche comme le jour de début de ma semaine. Maintenant, j'aimerais que 2016-01-01 à 2016-01-07, soit associé à la semaine 53, et commence la semaine 1 le 2016-01-03, qui tombe dimanche.Commencer le Weeknum le dimanche comme premier jour de la semaine

je la structure de trame de données suivante:

require(lubridate) 
range <- seq(as.Date('2017-12-26'), by = 1, len = 10) 
df <- data.frame(range) 
ddf$WKN <- as.integer(format(df$range + 1, '%V')) 
df$weekday <- weekdays(df$range) 
df$weeknum <- wday(df$range) 

Cela me donnerait ceci:

df: 
range  WKN weekday weeknum 
2017-12-26 52 Tuesday  3 
2017-12-27 52 Wednesday  4 
2017-12-28 52 Thursday  5 
2017-12-29 52 Friday  7 
2017-12-30 52 Saturday  7 
2017-12-31 01 Sunday  1 
2018-01-01 01 Monday  2 
2018-01-02 01 Tuesday  3 
2018-01-03 01 Wednesday  4 
2018-01-04 01 Thursday  5 

Ce que je voudrais avoir est:

df: 
range  WKN weekday weeknum 
2017-12-26 52 Tuesday  3 
2017-12-27 52 Wednesday  4 
2017-12-28 52 Thursday  5 
2017-12-29 52 Friday  7 
2017-12-30 52 Saturday  7 
2017-12-31 53 Sunday  1 
2018-01-01 53 Monday  2 
2018-01-02 53 Tuesday  3 
2018-01-03 53 Wednesday  4 
2018-01-04 53 Thursday  5 
. 
. 
2018-01-07 01 Sunday  1 

Can point de tout le monde moi dans une bonne direction? @alistaire avait fourni une solution ici Start first day of week of the year on Sunday and end last day of week of the year on Saturday Mais je n'ai pas prévu ce blip ici.

Répondre

0

Vous l'avez. Les petits ajustements à ceci devraient servir mon but!

df$WKN <- as.integer(format(df$range, '%U'))