Convertir le numéro de la semaine de la date
J'ai un bloc de données dans R avec la semaine de l'année que je voudrais le convertir à une date. Je sais que je dois choisir une année et un jour de la semaine donc, je suis à la fixation de ces valeurs en 2014 et de 1. La conversion de cette date semble simple:
as.Date(paste(2014,df$Week,1,sep=""),"%Y%U%u")
Mais ce code ne fonctionne que si la semaine est supérieure à 9. Semaine 1 - 9 renvoie NA. Si je change la semaine à 01,02,03... il renvoie toujours NA.
Quelqu'un voit ce que je suis absent?
Double Possible de Transformer Année/Semaine pour l'objet date de R
Méfiez-vous des différentes conventions sur la manière de compter de la semaine de l'année. S'il vous plaît, voir cette réponse pour une discussion.
Méfiez-vous des différentes conventions sur la manière de compter de la semaine de l'année. S'il vous plaît, voir cette réponse pour une discussion.
OriginalL'auteur Aaron Soderstrom | 2015-09-09
Vous devez vous connecter pour publier un commentaire.
as.Date
est l'appel de la 1 à 9 comme NA comme il s'attend à deux chiffres pour le numéro de la semaine et ne peut pas analyser correctement.Pour le corriger, ajouter dans certains de diviser les choses:
0
en 01 en données numériques - voir la sortie depaste(2014,01,1,sep="")
- "201411". Vous pourriez fairepaste(2014,"01",1,sep="")
pour le rendre personnage, mais si vos données numériques qui ne sont pas facilement du travail.Méfiez-vous des différentes conventions sur la manière de compter de la semaine de l'année. S'il vous plaît, voir cette réponse pour une discussion.
OriginalL'auteur jeremycg
Une solution alternative est d'utiliser des opérations arithmétiques à partir de la
lubridate
package:La
-1
est nécessaire parce que2014-01-01
est déjà la semaine 1. En d'autres termes, nous voulons:df$Week == 1
à la carte de2014-01-01
(qui estymd("2014-01-01") + weeks(1-1)
)df$Week == 2
à la carte de2014-01-08
(qui estymd("2014-01-01") + weeks(2-1)
)Méfiez-vous des différentes conventions sur la manière de compter de la semaine de l'année. S'il vous plaît, voir cette réponse pour une discussion.
OriginalL'auteur Artem Sokolov