Bookmark and Share

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]

RE: st: Select a particular test


From   Nick Cox <n.j.cox@durham.ac.uk>
To   "'statalist@hsphsun2.harvard.edu'" <statalist@hsphsun2.harvard.edu>
Subject   RE: st: Select a particular test
Date   Fri, 24 Feb 2012 10:31:49 +0000

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 
n.j.cox@durham.ac.uk 


-----Original Message-----
From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Nick Cox
Sent: 24 February 2012 08:52
To: statalist@hsphsun2.harvard.edu
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 <njcoxstata@gmail.com> 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)
> <Adriana.Peci@oahpp.ca> 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/


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