Statalist The Stata Listserver

[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

st: RE: Re: Getting end of month

From   "Nick Cox" <>
To   <>
Subject   st: RE: Re: Getting end of month
Date   Sun, 15 Oct 2006 17:38:30 +0100

Michael and Svend are clearly spot on
in suggesting that the key to this 
is getting the day before the first
day of the next month. 

In addition, -egenmore- on SSC has carried
canned -egen- functions to do this for about
six years now. 


Svend Juul 

How about this: 
// Create 3 dates for the exercise:
input d m y
20 1 1991
10 3 2005
24 12 2005
gen date=mdy(m,d,y)
drop m d y
format date %d
// Here we go:
gen dd = day(date)
gen mm = month(date)
gen yyyy = year(date)
gen mm1=mm+1 if mm<12
replace mm1=1 if mm==12
replace yyyy=yyyy+1 if mm==12
gen date1 = mdy(mm1,1,yyyy)-1
format date1 %d
I just subtracted 1 from the first day in the following month.
But note the small "complication" with December.
Michael Blasnik
> No, but it's a fairly simple calculation, just subtract 1 day 
> from the first 
> of the next month and make sure to deal with December dates:
> gen newdate=mdy( month(date)+1,1,year(date))-1
> replace newdate=mdy(12,31,year(date)) if month(date)==12
> It could be done in a single line by combining these using cond()

Nuno Soares

> > I'm converting a set of dates to the end of the respective 
> month, for
> > instance:
> > 20Jan91 -> 31Jan91
> > 10Mar05 -> 30Mar05
> > Etc.
> >
> > Does anyone knows a function in Stata that does this automatically?

*   For searches and help try:

© Copyright 1996–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index