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, is already up and running.

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

Re: st: Assigning values from a list

Subject   Re: st: Assigning values from a list
Date   Sat, 22 May 2010 21:21:17 +0930

Sorry I should clarify what var1 and var4 are:

When a patient presents to the clinic, they can be diagnosed with at least one
but up to 4 diseases, entered into var1-4 as codes from the Diagnostic and
Statistical Manual version 9.0. Var1 will always have a value but the remaining
var2-4 may or may not be missing, depending on the diagnosis. So if I want to
find patients suffering from a group of viral illnesses, I would have to search
all 4 variables for the codes 53.20, 54.43 etc up to 76.90

I need to search all var1-4 for every one those codes to make sure I don't miss
any cases. But there are many cases where at least one of var2-4 are missing. 
In that case it might be better to step through through the variables one by

I also tried doing this using a
local varlist var1 var2 var3 var4
gen virus=.
foreach var in varlist {
 if virus !=. {
   replace virus=1 if ((`var'==53.20) |(`var'==54.42) |(`var'==54.43) | ///
   (`var'==76.00) |(`var'==76.90))

command, but I wasn't aware of the command inlist when I wrote that. 

Similarly if I want to find other groups of diseases (eg fungal infections) I
need to search var1-4 for a different list of DSM codes.

There are about 20 groups of diseases that I need to identify. To complicate
things patients can have multiple diagnoses so I need to make a judgement call
about which one is more serious - var1 takes precedence.

On Thu, May 20, 2010 at 8:49 PM,  <> wrote:
> Hi All,
> I was wondering if someone would help me with a basic programming questions.
> I have 4 variables that are basically DSM codes and I would like to search
> through those codes.
> I would like to define lists of diseases and then pick which cases have those
> diseases
> So instead of writing
> gen virus=(var1==53.20) |(var1==54.42) |(var1==54.43) | /*
> */ (var1==76.00) |(var1==76.90)
> replace virus=((var2==53.20) |(var2==54.42) |(var2==54.43) | /*
> */ (var2==76.00) |(var2==76.90)) if virus==.
> replace virus=((var3==53.20) |(var3==54.42) |(var3==54.43) | /*
> */ (var3==76.00) |(var3==76.90)) if virus==.
> replace virus=((var4==53.20) |(var4==54.42) |(var4==54.43) | /*
> */ (var4==76.00) |(var4==76.90)) if virus==.
> Repeat for several other categories of diseases - ends up with very long and
> confusing code.
> Is there a way of defining a list eg virus={53.20, 54.42, 54.43, 76.00,
> and checking to see whether var1-4 have values in the list?
*   For searches and help try:

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