Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Nick Cox <njcoxstata@gmail.com> |
To | "statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu> |
Subject | Re: st: nested loop with string values |
Date | Wed, 18 Dec 2013 17:12:22 +0000 |
Now that I see more nearly what you want, I can suggest foreach j in a b c d e f g h i j { egen e13mani`j' = rowmax(ecyma*ni`j'13) } If that's not quite it, you can probably get an idea from it. See -egen-'s help on row functions. Nick njcoxstata@gmail.com On 18 December 2013 17:05, Claudia Rangel <clrangel@gmail.com> wrote: > Thanks for the reply and helpful suggestions. > > the revised version now works as expected. > > > tokenize "a b c d e f g h i j" > forval j =1/10{ > gen e13mani``j'' =. > forval i =1/6{ > replace e13mani``j'' = ecyma``i''ni``j''13 if ageflgecy =="``i''" > } > } > > Claudia > > On Tue, Dec 17, 2013 at 1:55 AM, Nick Cox <njcoxstata@gmail.com> wrote: >> You don't explain what "not working" means precisely. I have an >> unpublished list of about 20 senses in which this phrase or one >> similar has been used on Statalist, just three of which are syntax >> error, not converging and giving results that are incorrect. >> >> Both your loops are in terms of an index i. You refer to an index j >> which is never defined. That is not illegal, but Stata will just >> substitute a blank. I guess at a typo, but as both inner loop and >> outer loop refer to j, there is likely to be a logic error there too. >> >> Your problem may call for a -reshape long-, not the creation of more >> variables, but I don't understand your data structure at all. Perhaps >> you should give us an example of your data, explaining what is to be >> an observation. For example, are individual observations people and >> values present only if the person is in a particular age group or >> income group? In that case, one of the row functions in -egen- may >> help. >> Nick >> njcoxstata@gmail.com >> >> >> On 17 December 2013 07:45, Claudia Rangel <clrangel@gmail.com> wrote: >>> Dear Stata list members >>> >>> apologies for the newbie question, but I have spent two days reading >>> and my first attempt at a nested loop is still not working. >>> >>> I have a long list of variables (i.e. ecymacnia13 ecymacnib13 >>> ecymacnic13 ecymadnia13 ecymadnib13 ecymadnic13), which basically >>> identify age groups "a b...f" and income groups "a b c...j". >>> >>> I am trying to generate one variable holding the income values >>> according to the age group for each observation on the dataset (in >>> variable ageflgecy: a (<34) b (35-54) c(45-64)...), and hopefully >>> reducing the 5 X 10 variables to just 10 income variables. >>> >>> I was able to create a similar loop but the variable names contain >>> numbers instead of strings for the age and income groups. >>> >>> This is one of my latest attempts: >>> >>> >>> tokenize "a b c d e f g h i j" >>> forval i =1/10 { >>> gen ecymani``j''13 =. >>> forval i =1/6{ >>> replace ecymani``j''13 = ecyma`i'ni`j'13 if ageflgecy ==`i' >>> } >>> } >>> >>> >>> Thanks for any suggestion. >>> Claudia >>> * >>> * 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/ * * 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/