Générer une séquence du dernier jour du mois sur deux ans
- Je utiliser lubridate et pensé que ce serait si facile
ymd("2010-01-31")+months(0:23)
Mais regardez ce que l'on obtient. Il est tout foiré!
[1] "2010-01-31 UTC" "2010-03-03 UTC" "2010-03-31 UTC" "2010-05-01 UTC" "2010-05-31 UTC" "2010-07-01 UTC" "2010-07-31 UTC" "2010-08-31 UTC" "2010-10-01 UTC"
[10] "2010-10-31 UTC" "2010-12-01 UTC" "2010-12-31 UTC" "2011-01-31 UTC" "2011-03-03 UTC" "2011-03-31 UTC" "2011-05-01 UTC" "2011-05-31 UTC" "2011-07-01 UTC"
[19] "2011-07-31 UTC" "2011-08-31 UTC" "2011-10-01 UTC" "2011-10-31 UTC" "2011-12-01 UTC" "2011-12-31 UTC"
Puis j'ai lu comment lubridate approvisionne à des phénomènes tels que l'intervalle, la durée et la période. Donc, OK je me rends compte qu'un mois c'est effectivement le nombre de jours défini par (365*4+1)/48 = 30.438 jours. Donc j'ai essayé d'être intelligent et de le réécrire comme
ymd("2010-01-31")+ as.period(months(0:23))
Mais qui a juste une erreur.
Error in as.period.default(months(0:23)) : (list) object cannot be coerced to type 'double'
Vous devez vous connecter pour publier un commentaire.
Oui, vous avez trouvé la bonne astuce: pour en revenir un jour à partir de la première de la le mois prochain.
Est ici comme un one-liner dans la base de R:
Donc pas besoin de lubridate qui (tout en étant d'une amende paquet) n'est pas nécessaire pour une tâche simple comme ça. De Plus, sa surcharge de la base existante des fonctions encore, me paraît un peu dangereux...
Il est étonnant de voir comment, en tapant une question se concentre l'énergie créatrice. Je pense que j'ai la réponse. Me reste plus qu'à le poster ici pour la prochaine pauvre âme qui se retrouve de perdre du temps.
Il suffit de préciser le premier jour du mois suivant et générer une séquence de cela mais de soustraire 1 jours pour le dernier jour du mois précédent.
Par la voie, comment puis-je me débarrasser de l'ennuyeux "UTC" désignations. Les fuseaux horaires sont un épargnant de vie quand ils sont nécessaires. Le reste du temps, ils sont une nuisance.
strftime(date)
pour se débarrasser de l'horaire. doncstrftime('2010-10-31 UTC')
serait de vous donner2010-10-31
.