Jeph Herrin wrote:
I have hundreds of variables that I need to loop through
and process. Some of them are grouped together because they
represent different options that are not mutually exclusive;
for example, "Insurance type: check all that apply:" has
results stored in:
payor_1
payor_2
payor_3
payor_4
payor_5
payor_6
I have a datum -type- associated with each that tells me it is part of a
"multiselect" (sic) question, so when I loop through all my variables:
foreach V of varlist `biglist' {
gettype(`V')
if `type'=="M" {
<do stuff>
}
.
.
.
}
The ... handles every other types of variable. However, when I
<do stuff> I'd like to handle all the variables in that particular
group, eg, payor_1-payor_6. I can do this, but then I need to advance
the -foreach- to the variable *after* payor_6.
One thought I had was to reference the variables by their number, which
is available via -describe, number- (I'd have to -keep `biglist'- first)
but I'm not sure how to refer to a variable by its number, and can't
find any info on how to do so.
Does anyone see how to make this idea - or any other- work so I can skip
ahead in a -foreach- loop?
--------------------------------------------------------------------------------
How about something along the lines of the do-file below? The "type" is
stored as a characteristic in the example. It uses -while- loops instead of
nested -foreach- to process the macros via -gettoken-.
Joseph Coveney
clear *
set more off
input byte payor_1 byte payor_2 byte payor_3 ///
byte payor_4 byte payor_5 byte payor_6 ///
str1 payee_1 str2 payee_2
1 1 1 1 1 1 "Q" "R"
end
foreach var of varlist payor_* {
char define `var'[type] M
}
foreach var of varlist payee_* {
char define `var'[type] "Not M"
}
local biglist payor_1 payor_2 payor_3 payor_4 ///
payor_5 payor_6 payee_1 payee_2
*
* Begin here
*
gettoken var biglist : biglist
while ("`var'" != "" ) {
local multiselect : char `var'[type] // <-> gettype(`V')
while ("`multiselect'" == "M") {
display in smcl as text "Do stuff `var'"
gettoken var biglist : biglist
local multiselect : char `var'[type]
}
display in smcl as text "Do other stuff `var'"
gettoken var biglist: biglist
}
exit
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/