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: Renumbering variables in a loop of files
From
Florian Seliger <[email protected]>
To
[email protected]
Subject
Re: st: Renumbering variables in a loop of files
Date
Sat, 18 Dec 2010 12:48:02 -0700
Your first suggestion is excellent. Thank you.
Am 17.12.2010 um 16:24 schrieb Sergiy Radyakin:
> On Sat, Dec 18, 2010 at 12:15 AM, Florian Seliger
> <[email protected]> wrote:
>> Dear Statalist,
>>
>> I have again a question concerning numbering IDs in a foreach loop.
>>
>> I have multiple datafiles for that I have specified a foreach loop.
>> Each dataset either contains a variable id_1, id_2, id_3, etc. or only a variable id without a number.
>>
>> My goal is to assign a number to all IDs in each file. The numbers should reflect the number of the file, e.g.
>>
>> file no. old variable ---> new variable
>> 1 id_1 id_1
>> 2 id_2 id_2
>> 3 id_3 id_3
>> 4 id id_4
>> 5 id_4 id_5
>> 6 id_5 id_6
>> 7 id id_7
>> 8 id_6 id_8
>> ... ... ... .
>>
>
>
> Florian, if you only have one variable id* per file the following
> should suffice:
>
> tempvar ID
> rename id `ID'
> rename `ID' id_`j'
>
> here the second line delegates to Stata to unabbreviate what id is
> (whether it is
> id, id2, or id92) and rename it to some temporary name. Then it is renamed to a
> properly numbered variable, where j is your file index. We need the temporary
> variable to avoid renaming the variable into itself (Stata aborts on
> "rename x x").
> Alternatively, add capture, though then you might be missing other important
> errors.
>
>
>
>> I have specified a command such as the following:
>>
>> local i=1
>> foreach file ... {
>>
>> use "`file'", clear
>>
>> forvalues j=1(1)230 { //230 is the number of files
>> capture confirm id_`j'
>>
>> if _rc==0 {
>> sort id_`j'
>> capture rename id_`j' id_`i'
>> }
>> }
>>
>> else {
>> sort id
>> rename id id_`i'
>> }
>>
>>
>> local ++i
>> save "`file'", replace
>> }
>>
>> ***end command***
>>
>> With this command, STATA tells me for the first file that id_1 is already defined and stops the loop although I have used a second "capture" before "rename".
>
> Command -confirm-, such as :confirm variable id_1
>
> Example:
> capture confirm variable id_`j'
> if !_rc break, continue
>
>
>
> Best, Sergiy Radyakin
>
>
>> Do you have an idea how I have to rewrite the command?
>>
>> Thank you very much.
>> Best wishes,
>> Florian
>>
>>
>> *
>> * For searches and help try:
>> * http://www.stata.com/help.cgi?search
>> * http://www.stata.com/support/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/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/statalist/faq
* http://www.ats.ucla.edu/stat/stata/