Alors que la classe difftime est assez simple à utiliser lorsque l'on veut obtenir des différences annuelles ou quotidiennes entre les dates. Les différences mensuelles n'étaient pas aussi simples pour moi. Étant donné que l'arithmétique norme R permet des objets soustractions date Boucler dans un vecteur serait possible, mais here's une solution qui évite mise en boucle:Comment créer des périodes ordonnées mensuellement à partir de datevector sans boucler?
# generate reproducible example
x<-seq(as.Date("2010-11-15"),as.Date("2011-05-20"),"months")
y<-seq(as.Date("2010-04-15"),as.Date("2012-05-20"),"months")
z<-seq(as.Date("2012-08-15"),as.Date("2013-05-20"),"months")
d <- c(z,x,y)
# my function – suggestions are welcome!
getPeriods <- function(datevector){
x <- floor((as.numeric(datevector)-as.numeric(min(datevector)))/30) +1
return(x)
}
# This returns a vector of monthly ordered periods.
Y at-il une meilleure façon plus native de le faire? Par exemple, puis-je utiliser seq() en combinaison avec longueur() en quelque sorte? Je n'ai pas pu le faire parce que l'argument "to" de seq ne permet pas les vecteurs. Tout commentaire apprécié, d'ailleurs j'espère que cela peut aider quelqu'un d'autre ...
J'ai lu votre question trois fois maintenant, et je ne la comprends toujours pas. – hadley
@hadley: pas exactement le badge que j'aimerais gagner. La réponse de Joris Meys est exactement ce qui m'intéressait. Peut-être que simplement lire le code et poser la question de la révision standard: "Y at-il une meilleure façon de le faire?" est ce que j'aurais dû faire. Si vous avez fait référence à la partie seq(): je voulais simplement dire que length (seq (startdate, enddate)) ne fonctionne pas si enddate est un vecteur et startdate ne l'est pas (sans looping). –