shealingha 发表于 2012-8-10 21:25 
forval ii=1/10 { // ii代表什么,为什么不是i?
rename v`ii' fenzi
fo ...
forvalue 是循环语句啊, ii是local macro,用来指代从1到10的;
foreach也是循环语句,jj和ii类似。
在help中的循环例子使用的是i,或者j之类的单个字母,我采用两个字母是因为如果do file很长的的话,我要找个loop很容易,只要搜寻ii或者jj就行。如果使用i或者j的话,难保do file中没有其他包含这些字母的变量或者命令。
对不起,有两个typo:
(1) `fenzi'/`jj' 不对,因为fenzi是变量名,不是local macro,所以不应该用引号;
(2) rename fenzi v`jj'不对,应该是 rename fenzi v`ii',因为这个是用来控制分子的外循环。
现在修改好了
forval ii=1/10 {
rename v`ii' fenzi
foreach jj of varlist v* {
gen v`ii'd`jj'=fenzi/`jj'
}
rename fenzi v`ii'
}