Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


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

Re: st: Extracting substrings from variables.


From   Nick Cox <[email protected]>
To   [email protected]
Subject   Re: st: Extracting substrings from variables.
Date   Fri, 25 May 2012 15:04:33 +0100

Yes; my idea is that one of your parentheses ( or ) was missing! I've
rechecked my example and it looks OK.

if inlist(substr(m1diagx, 1, 3), "637", "642") | substr(m1diagx,
1, 2) == "O1"

Stata is just like elementary algebra: parentheses () brackets [] and
braces { } must all occur in pairs. You don't show us your code, and
so you need to count for yourself.

Nick

On Fri, May 25, 2012 at 2:31 PM, Amal Khanolkar <[email protected]> wrote:
> Thanks Brendan - it worked like a charm!  :)
>
> Nick - I tried your way using 'inlist' however I kept getting an error message that one bracket was missing - I tried several ways to try and solve the issue - but was unable to do so - any ideas?
>
> I agree with both of you - regexs can be annoying esp for me who came across it for the first time today :)
>
>
> Thanks!
>
> /Amal.
>
>
> ________________________________________
> From: [email protected] [[email protected]] on behalf of Brendan Halpin [[email protected]]
> Sent: 25 May 2012 14:07
> To: [email protected]
> Subject: Re: st: Extracting substrings from variables.
>
> On Fri, May 25 2012, Brendan Halpin wrote:
>
>> On Fri, May 25 2012, Amal Khanolkar wrote:
>>
>>> gen preght = regexs(0) if regexm(mdiag1x, "[^637] | [^642] | [^O1]")
>>
>> A quick and untested suggestion:
>>
>> . gen preght = regexs(0) if regexm(mdiag1x, "^(637)|(642)|(O1)")
>
> On testing, it seems the grouping parentheses are not necessary:
>
> ...................................................................
> . input str10 mdiag1x
>
>        mdiag1x
>  1.    "637 asdf"
>  2.    "638 asdf"
>  3.    "8637 asdf"
>  4.    "642 asdf"
>  5.    "O1 asdf"
>  6. end
>
> . gen preght = regexs(0) if regexm(mdiag1x, "^637|642|O1")
> (2 missing values generated)
>
> . gen hasdiag = regexm(mdiag1x, "^637|642|O1")
>
> . list
>
>     +------------------------------+
>     |   mdiag1x   preght   hasdiag |
>     |------------------------------|
>  1. |  637 asdf      637         1 |
>  2. |  638 asdf                  0 |
>  3. | 8637 asdf                  0 |
>  4. |  642 asdf      642         1 |
>  5. |   O1 asdf       O1         1 |
>     +------------------------------+
> ...................................................................

*
*   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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index