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 at the end of May, and its replacement, statalist.org is already up and running.


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

Re: st: A Tale of Two Macros: Why are these macros producing different results?


From   Sergiy Radyakin <serjradyakin@gmail.com>
To   "statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu>
Subject   Re: st: A Tale of Two Macros: Why are these macros producing different results?
Date   Tue, 30 Apr 2013 19:10:54 -0400

Documentation for inlist says that for strings only 10 arguments are supported.
So the following is a problem:

. di inlist("208","150","151", "157", "162", "183","191", "196",
"197", "198", "199", "200", "208")
expression too long
r(130);

Using spaces instead of commas prevents an error, but does not mean
that Stata is working correctly, it merely stops complaining:

. di inlist("208","150","151", "157", "162", "183","191", "196", "197"
"198" "199" "200" "208")
0

Using -destring- on the variable  you will get better results on list
search of the reals:
. di inlist(208, 150, 151, 157, 162, 183, 191, 196, 197, 198, 199, 200, 208)
1

Using two lists in the program is an additional source of a potential
error. What if you now need to add an additional diagnosis, e.g. 301,
or need to change 191 to 192?

Best, Sergiy




On Tue, Apr 30, 2013 at 5:56 PM, William Buchanan
<william@williambuchanan.net> wrote:
> You have statements that are not equivalent.  Check the commas in your first statement.
>
> HTH,
> Billy
>
> Sent from my iPhone
>
> On Apr 30, 2013, at 14:37, William Sankey <wsankey@gmail.com> wrote:
>
>> Good afternoon Statalist,
>>
>> I have two different macros operating in different parts of my code, I
>> developed the first macro some time ago and the second macro recently.
>> I believed these two macros would give me the same output, however,
>> the first macro is producing far fewer observations than the second.
>> It seems that the first is misclassifying observations and though I
>> cannot figure out why.
>>
>> Any help in deciphering what it is about the first macro that would
>> produce fewer observations would be much appreciated.
>>
>> The first macro set:
>>
>>  ***Cancer
>>
>>  local ICD2 "Diagnosis1 Diagnosis2 Diagnosis3 Diagnosis4 Diagnosis5"
>>   foreach X of varlist `ICD2' {
>>   replace cancer =1 if inlist(`X',"150","151" "157" "162" "183" "191"
>> "196" "197" "198" "199" "200" "208")
>>   }
>>
>>   local PMT2 "Diagnosis_PMT_A_1 Diagnosis_PMT_A_2 Diagnosis_PMT_B_1
>> Diagnosis_PMT_B_2 Diagnosis_PMT_C_1 Diagnosis_PMT_C_2"
>>
>>   foreach X of varlist `PMT2' {
>>   replace cancer =1 if inlist(`X',"150","151" "157" "162" "183" "191"
>> "196" "197" "198" "199" "200" "208")
>>   }
>>
>>
>> The second macro set:
>>
>> gen DIAG_1 =  Diagnosis1
>> gen DIAG_2 =  Diagnosis2
>> gen DIAG_3 =  Diagnosis3
>> gen DIAG_4 =  Diagnosis4
>> gen DIAG_5 =  Diagnosis5
>>
>> gen ALT_A_1 =  Diagnosis_PMT_A_1
>> gen ALT_A_2 =  Diagnosis_PMT_A_2
>> gen ALT_B_1 =  Diagnosis_PMT_B_1
>> gen ALT_B_2 =  Diagnosis_PMT_B_2
>> gen ALT_C_1 =  Diagnosis_PMT_C_1
>> gen ALT_C_2 =  Diagnosis_PMT_C_2
>>  ***Cancer
>>
>>   forval j = 1/5 {
>>        replace cancer=1 ///
>>       if inlist(DIAG_`j',"150","151", "157", "162", "183","191",
>> "196", "197" "198" "199" "200" "208")
>>       }
>>
>>   local letter "A B C"
>>    foreach i in `letter' {
>>     forval e = 1/2 {
>>        replace cancer=1 ///
>>       if (inlist(ALT_`i'_`e',"150","151" "157" "162" "183" "191"
>> "196" "197" "198" "199" "200" "208")
>>          }
>>         }
>>        }
>>
>> Thanks,
>> Will
>>
>> --
>> William J. Sankey
>> Johns Hopkins University
>> MA Public Policy '12
>> *
>> *   For searches and help try:
>> *   http://www.stata.com/help.cgi?search
>> *   http://www.stata.com/support/faqs/resources/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/faqs/resources/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/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


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