Statalist


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

RE: st: parsing a variable positionally


From   "Nick Cox" <n.j.cox@durham.ac.uk>
To   <statalist@hsphsun2.harvard.edu>
Subject   RE: st: parsing a variable positionally
Date   Tue, 3 Jun 2008 10:55:30 +0100

Phil is right that -substr()- is the main tool for parsing (string)
variables positionally. -split- is only for situations in which you have
parsing characters. 

I once tried to think up a command that that would be a wrapper for
repeated -substr()- and had just as much flexibility and simpler syntax,
but decided that the quest was futile. 

But given integer variables say -monthday- and -year-, you have other
methods open to you. 

I guess that dates like 15 October and 31 December are held as 1015 and
1231. (That being so, you do not want to parse after the first
character.)  

1. Concatenate -monthday- and -year- (using -egen, concat()-, for
example) and apply -date()-. 

Or 

2. gen dailydate = mdy(floor(monthday/100), mod(monthday, 100), year) 

For the last, consider 1231. The monthly part is 12, and the daily part
is 31. The monthly part is thus floor(monthday/100) or int(monthday/100)
and the daily part is the remainder mod(monthday, 100). 



-----Original Message-----
From: owner-statalist@hsphsun2.harvard.edu
[mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Philip Ryan
Sent: 03 June 2008 09:35
To: statalist@hsphsun2.harvard.edu
Subject: Re: st: parsing a variable positionally

<sacrifice>

the  substr()  string function might be useful.

Phil

  At 01:51 PM 3/06/2008, you wrote:
>Hey all,
>
>I'm trying to convert a variable into a date.  Ordinarily, this would
>be simple using Stata's date() functions, but one of my variables
>contains both month and date (i.e. 403 is April 3rd), while another
>contains year.  I'm trying to split the month+date variable into two
>variables by parsing after the first character.  I tried converting
>the variable to a string and using the "split" command, but it does
>not allow me to parse positionally; it merely allows me to specify a
>parsing character.  Is there a way to parse by position?
>
>Thanks,
>
>Rufus
>*
>*   For searches and help try:
>*   http://www.stata.com/support/faqs/res/findit.html
>*   http://www.stata.com/support/statalist/faq
>*   http://www.ats.ucla.edu/stat/stata/

Philip Ryan
Professor,
Discipline of Public Health

Director, Data Management & Analysis Centre

Associate Dean (IT)
Faculty of Health Sciences

postal address:
Discipline of Public Health
Mail Drop 511
University of Adelaide 5005
South Australia

location:
Level 6, Room 6-18
Bice Building
Royal Adelaide Hospital
North Terrace
Adelaide

tel +61 8 8303 3570
fax +61 8 8223 4075
http://www.public-health.adelaide.edu.au/
CRICOS Provider Number 00123M
-----------------------------------------------------------
This email message is intended only for the addressee(s)
and contains information that may be confidential and/or
copyright. If you are not the intended recipient please
notify the sender by reply email and immediately delete
this email. Use, disclosure or reproduction of this email
by anyone other than the intended recipient(s) is strictly
prohibited. No representation is made that this email or
any attachments are free of viruses. Virus scanning is
recommended and is the responsibility of the recipient.

*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/

*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/



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