Рассмотрим следующий игрушечный пример:
clear
set obs 1
forvalues i = 1 / 3 {
generate x`i' = runiform()
}
list
+--------------------------------+
| x1 x2 x3 |
|--------------------------------|
1. | .3913819 .1196613 .7542434 |
+--------------------------------+
Вот один из способов сделать то, что вы хотите:
local varlist1 "x1 x2 x3"
local varlist2 "a b c"
tokenize `varlist2'
local i 0
foreach var1 of local varlist1 {
local ++i
rename `var1' ``i''
}
list
+--------------------------------+
| a b c |
|--------------------------------|
1. | .5844658 .3697791 .8506309 |
+--------------------------------+
Идея в том, чтобы разбить локальный макрос varlist2
наразделяйте аргументы 1
, 2
, 3
и т. д., а затем перемещайтесь по ним, используя локальный макрос счетчика i
.
В качестве альтернативы, вы можете просто сделать:
local varlist1 "x1 x2 x3"
local varlist2 "a b c"
rename (`varlist1') (`varlist2')
или:
rename x# (`varlist2')