Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
Nick Cox <n.j.cox@durham.ac.uk> |

To |
"'statalist@hsphsun2.harvard.edu'" <statalist@hsphsun2.harvard.edu> |

Subject |
st: RE: replace part of string variable |

Date |
Wed, 8 Jun 2011 19:44:28 +0100 |

There is no need for regex machinery here. This supports my prejudice that -substr()-, -subinstr()-, -length()- and -strpos()- (the best string quartet outside Vienna) are often overlooked because people suppose that the fancier regex stuff may be needed. replace dob = "30" + substr(dob, 3, .) if substr(dob, 1, 2) == "**" replace dob = substr(dob, 1, 2) + "06" + substr(dob, 5, .) if substr(dob, 3, 2) == "**" By the way, it doesn't seem consistent to replace an unknown day with "30" and an unknown month with "06". More importantly, 30 February will only cause problems downstream. In some similar problems, I used 15th as a guess at day of month. Nick n.j.cox@durham.ac.uk raoul reulen I want to replace a specific character (let's say: **) of a string variable, but only if it is in a certain position. I have a string variable for date of birth (dob) and some of the month values and some of the day values are unknown and have been substituted by an asterisk, like: dob (day, month, year) "01**1978" "04**1987" "**011977" "03**1978" Now, I want to replace the first two characters with the value "30" if the first two values are an asterisk, the 3th and 4th with "06" if they are an asterisk etc. Now, I can obviously split the variable into 3 components like below, but I am sure there is an easier way. Is this a job for "regexm"? I looked into "subinstr" as well, and although I can replace the asterisks, it seems to be independent of the position/location the asterisks are in. *---example---* .gen str4 dobyear = substr(dob, 5, 4) .gen str2 dobmth = substr(dob,3,2) .gen str2 dobday = substr(dob,1,2) .replace dobmth = "06" if dobmth=="**" .replace dobday = "30" if dobday=="**" *-----end example------* Any help appreciated! * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**References**:**st: replace part of string variable***From:*raoul reulen <r.c.reulen@gmail.com>

- Prev by Date:
**Re: st: test or ftest command** - Next by Date:
**st: Coefficients in xtpcse** - Previous by thread:
**st: replace part of string variable** - Next by thread:
**Re: st: replace part of string variable** - Index(es):