81 votes

Nombre de mois entre deux dates

Existe-t-il une méthode/formule standard/commune pour calculer le nombre de mois entre deux dates dans R ?

Je cherche quelque chose qui soit similaire à Fonction mois de MathWorks

5voto

hyunwoo jeong Points 685
library(lubridate)

cas1 : fonction naïve

mos<-function (begin, end) {
      mos1<-as.period(interval(ymd(begin),ymd(end)))
      mos<-mos1@year*12+mos1@month
      mos
}

cas2 : si vous devez considérer uniquement le 'Mois' sans tenir compte du 'Jour'.

mob<-function (begin, end) {
      begin<-paste(substr(begin,1,6),"01",sep="")
      end<-paste(substr(end,1,6),"01",sep="")
      mob1<-as.period(interval(ymd(begin),ymd(end)))
      mob<-mob1@year*12+mob1@month
      mob
}

Exemple :

mos(20150101,20150228) # 1
mos(20150131,20150228) # 0
# you can use "20150101" instead of 20150101

mob(20150131,20150228) # 1
mob(20150131,20150228) # 1
# you can use a format of "20150101", 20150101, 201501

4voto

Ajay Ohri Points 59
library(lubridate)
date1 = "1 April 1977"
date2 = "7 July 2017"

date1 = dmy(date1)
date2 = dmy(date2)
number_of_months = (year(date1) - year(date2)) * 12 + month(date1) - month(date2)

Différence en mois = 12 * différence en années + différence en mois.

Il peut être nécessaire de corriger les points suivants en utilisant ifelse condition pour les soustractions du mois

4voto

EDUARDO ROLDAN Points 39

Pour moi, c'est ce qui a fonctionné :

library(lubridate)

Pagos$Datediff <- (interval((Pagos$Inicio_FechaAlta), (Pagos$Inicio_CobFecha)) %/% months(1))

Le résultat est le nombre de mois entre deux dates et est stocké dans une colonne du cadre de données Pagos.

3voto

Zheng Feng Points 41

Vous pouvez utiliser la fonction as.yearmon() du paquet zoo. Cette fonction convertit une variable de type Date en une variable de type année-mois. Vous pouvez soustraire deux variables de type année-mois, puis les multiplier par 12 pour obtenir la différence en mois comme suit :

12 * (as.yearmon(Date1) - as.yearmon(Date2))

0voto

Kamlesh Points 157

Différence de date en mois

$date1 = '2017-01-20';
$date2 = '2019-01-20';

$ts1 = strtotime($date1);
$ts2 = strtotime($date2);

$year1 = date('Y', $ts1);
$year2 = date('Y', $ts2);

$month1 = date('m', $ts1);
$month2 = date('m', $ts2);

echo $joining_months = (($year2 - $year1) * 12) + ($month2 - $month1);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X