Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | David Lockhart <david.lockhart@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: macros of multiple complex strings |
Date | Tue, 2 Jul 2013 15:45:07 -0700 |
Thanks, Nick. That both makes sense and works. On Tue, Jul 2, 2013 at 3:39 PM, Nick Cox <njcoxstata@gmail.com> wrote: > My guess: > > Your second code block first tries to interpret > > replace lym = 1 if `textfield' == `proc' > > as > > replace lym = 1 if prncptx = LAPT STG/RESTG OVARIAN TUBAL/PRIM MAL 2ND LOOK > > and Stata tries to make sense of this by looking for a variable (or > scalar) named > > LAPT > > and it fails. Hence the error. Stata didn't even look at the rest of > your text string. Stata bailed out at the first error. > > The code should be > > replace lym = 1 if `textfield' == "`proc'" > > so that `proc' appears inside " " and is interpreted as you want as a > literal string. > > You may well be thinking: But I supplied " " as delimiters. And so you > did, but Stata's habit is to strip delimiters, and you must put them > back. > Nick > njcoxstata@gmail.com > > > On 2 July 2013 23:28, David Lockhart <david.lockhart@gmail.com> wrote: >> I have a dataset with information on surgeries recorded by CPT codes. Each >> patient has up to 21 CPT codes in variables called cpt othercpt1 ... >> othercpt10 concpt1 ... concpt10. >> >> I also have several lists of CPT codes which include procedures of >> interest. For example, 6 codes which involve lymph node dissection (LND). I >> am trying to create a variable which has the value 1 if the surgery >> involved LND and 0 if it did not. >> >> But some codes are ambiguous, for example the code 58960 includes removal >> of tumor with or without LND. Each CPT code field has an accompanying text >> field which holds a brief text description describing the procedure, and >> sometimes this can disambiguate these codes. I have made a list of the >> values this text field takes on for the ambiguous codes and have selected >> those which I wish to count as indicating that LND was performed. But I'm >> having trouble setting up the code to do this. >> >> Here's what I'm trying that isn't working. The first loop works but the >> second does not. >> >> gen lym = 0 >> foreach cptfield of varlist cpt othercpt* concpt*{ >> foreach cptcode of numlist 38562 38564 38570 38571 38572 38589 38770 >> 38780 58200 58210 /// >> 58548 58943 58951 58954 59548 { >> qui replace lym = 1 if `cptfield' == `cptcode' >> } >> } >> >> foreach textfield of varlist prncptx otherproc* concurr* { >> foreach proc in "LAPT STG/RESTG OVARIAN TUBAL/PRIM MAL 2ND LOOK" /// >> "RESECT RECUR GYN MAL W/LYM" "BSO W/OMNTC TAH DEBULKING W/LMPHADEC" /// >> "LAPS W/RAD HYST W/BILAT LMPHADEC RMVL T" "RAD ABDL HYST W/BI PEL >> LMPHADEC" /// >> "RESECTION RECRT MAL W/OMENTECTOMY PEL LMPHADEC" /// >> "LAPAROTOMY, FOR STAGING OR RESTAGING OF OVARIAN,"{ >> replace lym = 1 if `textfield' == `proc' >> } >> } >> >> When I run this, I get an error that "LAPT not found". So, I can tell it >> is trying to split up that string into "words", but I don't understand why >> or how to get it to treat the strings as separate units. >> * >> * 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/