2015-12-31 1 views
0

Salut Je regarde les données à voir avec les prix des produits de base sur une période de quelques années. Je veux résumer les prix par semaines de travail, et non pas les semaines définies par des périodes de sept jours depuis le 1er janvier. Quand j'ai essayé:R: Obtenez numéro de semaine de travail, pas des périodes de sept jours depuis le 1er janvier

data <- mutate(data, week = week(strptime(Date, "%m/%d/%Y"))) 

Les chiffres de la fonction semaine lubridate() « 13/01/10 » (MJA) de la semaine 2 et « 14/01/10 » la semaine 3. Je veux que ceux d'être dans la même semaine. Fondamentalement, toute course de lundi-vendredi dans la même semaine. Si l'année commence un mercredi, je veux que la semaine soit le mercredi, la semaine 2 pour le lundi suivant. Je n'ai pas de données sur les week-ends. Des pensées? Merci

Répondre

3

Cela vous donnera le numéro de la semaine en supposant la colonne de date est au format de la date (vous pouvez utiliser as.Date() pour convertir):

data <- mutate(data, week = format(Date, '%U')) 

Si vous voulez la semaine et l'année, vous pouvez utiliser:

data <- mutate(data, week = format(Date, '%Y-%U')) 

Il numérotera correctement les semaines partielles.

Remarque: le numéro de la semaine commence par 00 (mais cela ne devrait pas poser de problème).

Vous pouvez également le faire sans dplyr et il est mute, comme ceci:

data$week <- format(data$Date, '%U') 
+0

Votre code est à l'origine de l'erreur sans 'plyr' /' paquets dplyr' chargement. –

+0

Correct. Cela nécessite dplyr. Mais, puisque la question postée a muté pour commencer, j'ai supposé que la solution dplyr était acceptable. Je vais également éditer pour ajouter une version non-dplyr. – Gopala