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
Nick Cox <[email protected]>
To
[email protected]
Subject
Re: st: Select a particular test
Date
Fri, 24 Feb 2012 08:52:22 +0000
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/