[R] Function for computing the difference between 2 dates in months

Smith, Phil pzs6 at CDC.GOV
Mon Apr 17 22:05:51 CEST 2006


Folks:

With the help of David L. Reiner, I've developed a function that
computes the number of months between 2 dates, x and y.


num.months	<-	function ( x , y )
{
	x	<-	as.Date( x )
	y	<-	as.Date( y )
	seeq	<-	seq(from=x , to=y , by="months")
	ans	<-	length( seeq  ) - 1
	if ( max( seeq) > y ) ans <- ans -1
	ans 
}

To ease your reading this function, I've left out some data cleaning
issues, and it is assumed that x <= y  and that x and y were output from
as.date function (note the lower case "d" in as.date). The postscript
below provides 2 examples.

Anyone who wishes to comment or recommend a more accurate (or correct!)
method is welcome. 

Best regards,
Phil Smith
Centers for Disease Control and Prevention

Example #1:


> x<-c( "2004-02-28" ) 
> y<-c( "2004-04-27" ) 
> num.months ( x , y )
[1] 1
> 


Example #2:

> x<-c( "2004-01-31" ) 
> y<-c( "2004-04-22" ) 
> num.months ( x , y )
[1] 2




More information about the R-help mailing list