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: A Tale of Two Macros: Why are these macros producing different results?


From   Sergiy Radyakin <[email protected]>
To   "[email protected]" <[email protected]>
Subject   Re: st: A Tale of Two Macros: Why are these macros producing different results?
Date   Mon, 10 Jun 2013 23:38:41 -0400

On Tue, Apr 30, 2013 at 9:18 PM, William Buchanan
<[email protected]> wrote:
> You might be able to investigate how things are being processed by using -set trace on-.

inlist is a function and trace does not show function implementation
(all functions are built-in).
Sergiy

>
>
> On Apr 30, 2013, at 6:13 PM, William Sankey <[email protected]> wrote:
>
>> Thank you for the help, I wonder what the command is processing
>> without the commas?
>>
>> Anyway, I will look to the documentation. Thanks again,
>>
>> On Tue, Apr 30, 2013 at 7:10 PM, Sergiy Radyakin <[email protected]> wrote:
>>> 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
>>> <[email protected]> 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 <[email protected]> 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/
>>
>>
>>
>> --
>> 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–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index