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

From |
Jeph Herrin <junk@spandrel.net> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: advance a -foreach- loop? |

Date |
Wed, 14 May 2008 09:05:58 -0400 |

Austin, Nick, thanks for the replies. I think I should have been more specific about my list of variables. I am processing several input files with this, and in each all I know about the variables of interest is that they have a given prefix. So in practice local biglist = "prfx_*" Ie, I oversimplified in my example; the variables are actually prfx_payor_1 prfx_payor_2 prfx_payor_3 ... etc There are hundreds of variables in each file, and it would be far more time consuming to go through and group them, especially as I will be rerunning this routinely on files that someone else is producing, with the variables changing potentially each time. Also, because of the number of variables, I think expanding into a macro and then indexing over the words will not work because of the limit on macro length (right?). However, I may have to next my loop inside another, and do some preprocessing of -biglist- first. thanks, Jeph Austin Nichols wrote:

Jeph Herrin <junk@spandrel.net>: 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 <junk@spandrel.net> 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/

* * 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/

**Follow-Ups**:**Re: st: advance a -foreach- loop?***From:*"Austin Nichols" <austinnichols@gmail.com>

**References**:**st: advance a -foreach- loop?***From:*Jeph Herrin <junk@spandrel.net>

**Re: st: advance a -foreach- loop?***From:*"Austin Nichols" <austinnichols@gmail.com>

- Prev by Date:
**st: How to perform multivariate simulation with copula** - Next by Date:
**st: infile and dictionaries and the small data mindset** - Previous by thread:
**Re: st: advance a -foreach- loop?** - Next by thread:
**Re: st: advance a -foreach- loop?** - Index(es):

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