Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

Re: st: advance a -foreach- loop?


From   "Austin Nichols" <[email protected]>
To   [email protected]
Subject   Re: st: advance a -foreach- loop?
Date   Wed, 14 May 2008 07:56:20 -0400

Jeph Herrin <[email protected]>:
Can you not use -else- here?  I.e.
 foreach V of varlist `biglist' {
  gettype(`V')
  if `type'=="M" {
   <do stuff>
  }
  else {
   <do other stuff>
  }
 }

If you did want to reference variables by their number, and did -keep
`biglist'- first, you can refer to word `i' of `biglist' to get the
ith variable (see "Macro extended functions for parsing" in help
extended_fcn).

BTW, it might be more efficient to move the type "M" variables into a
separate macro to process separately, depending on how you are
choosing to handle all the variables in a particular group, e.g.
payor_1-payor_6.  E.g.

 foreach V of varlist `biglist' {
  gettype(`V')
  if `type'=="M" {
   <make list of variables related to `V' e.g. payor_1-payor_6>
   <and put the list in local `thislist' >
   loc mlist `" `mlist' "`thislist'" "'
  }
  else {
   <do other stuff>
  }
 }
 foreach V of varlist `mlist' {
  <now operate on each group of related vars>
 }

On Tue, May 13, 2008 at 3:45 PM, Jeph Herrin <[email protected]> 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?
*
*   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/



© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index