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: Select a particular test


From   "Peci, Adriana (OAHPP)" <[email protected]>
To   <[email protected]>
Subject   RE: st: Select a particular test
Date   Fri, 24 Feb 2012 09:18:51 -0500

Thank you so much Nick,

Adriana 

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Nick Cox
Sent: February 24, 2012 5:32 AM
To: '[email protected]'
Subject: RE: st: Select a particular test

Typo fix 

bysort pat_id: egen OK = max(max(test == "IFA", 0) - max(inlist(test, "DFA", "CULT", "BIN"), 0)))

I still prefer my first solution. 


Nick 
[email protected] 


-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Nick Cox
Sent: 24 February 2012 08:52
To: [email protected]
Subject: Re: st: Select a particular test

At the expense of some clarity

bysort pat_id: egen OK = max(max(test == "IFA", 0) - max(inlist(test,
"DFA", "CULT", "BIN", 0)))

This quite possibly needs too much explanation to be interesting, but

1. The outermost -max()- is an -egen- function and the inner -max(,)-
are calls to the Stata-wide function with that name,

2. If -test- is ever "IFA" then max(test == "IFA", 0) is 1. Similarly
with the other term.

3. So the difference is 1 if and only if the patient has had IFA but
none of the other tests.

Nick

On Fri, Feb 24, 2012 at 12:22 AM, Nick Cox <[email protected]> wrote:
> bysort pat_id : egen select = total(test == "IFA")
> by pat_id : egen reject = total(inlist(test, "DFA", "CULT", "BIN"))
> keep if select & !reject
>
> Your example implies that some tests might be repeated. If there were
> exact rules on such repetition then the code might be shorter; and
> possibly otherwise.
>
> Nick
>
> On Thu, Feb 23, 2012 at 10:57 PM, Peci, Adriana (OAHPP)
> <[email protected]> wrote:
>
>> I have a long form database in which each patient identified by pat_id
>> have up to four tests performed.
>> The test names are:IFA, DFA, CULT, BIN.
>> I want to select/know how many patients had IFA but not DFA, CULT, or
>> BIN.
>>
>> Here is an improvise of my data:
>>
>> Pat_id    Test
>> 1         IFA
>> 1         DFA
>> 1         CULT
>> 1         BIN
>> 2         BIN
>> 2         IFA
>> 2         DFA
>> 3         IFA
>> 4         DFA
>> 4         CULT
>> 4         CULT
>>

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

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

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