Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: nested loop with string values


From   Nick Cox <[email protected]>
To   "[email protected]" <[email protected]>
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
[email protected]


On 18 December 2013 17:05, Claudia Rangel <[email protected]> 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 <[email protected]> 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
>> [email protected]
>>
>>
>> On 17 December 2013 07:45, Claudia Rangel <[email protected]> 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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index