1. 小弟有个关于写循环语句的问题,原程序如下:
matrix define x = J(480,41,7777)
svmat x
rename x1 nrows
rename x2 n_th_row
rename x3 st_name
rename x4 st_id
rename x5 year
rename x6 month
rename x7 yeff
rename x8 meff
rename x9 deff
。。。。
即对matrix x 里的41个列起41个名字
clear
matrix define y = J(480,41,7777)
svmat y
*
rename y1 nrows
rename y2 n_th_row
rename y3 st_name
rename y4 st_id
rename y5 year
rename y6 month
rename y7 yeff
rename y8 meff
rename y9 deff
。。。
即对matrix x 里的41个列起41个名字
clear
use x
append using y
append using z
append using zz
replace nrows = _N
save dt_mw_2009_04_20_m, replace
drop ysupport
总目标就是对x,y,z, zz这四个矩阵的每个列重新命名,每个列的名字在x,y,z,zz这四个矩阵都一样,最后将这四个矩阵合并
我想对上面4个矩阵的程序简化,
local xlist "nrows n_th_row st_name st_id year month yeff meff deff ypssd mpssd dpssd dexm nmw mw_gnrl mw_youth mw_tip_a mw_tip_y mw_small_a mw_small_y mw_agrclt_a ....."
foreach x of local xlist {
forvalues i = 1/41 {
rename x`i' x
}
}
这个Foreach, forvalue 是不是要二重循环呢?真的很迷茫,我是菜鸟,还望大家多帮忙,谢谢
2. 大家看下我这个FOREACH 语句有什么问题呢?
foreach var of varlist ds_agrclt_a ds_agrclt_y ds_first60_a ds_first60_y ds_first90_a ds_first90_y ds_gnrl ds_oppr_nonagrclt ds_oppr_tip ds_prob_agrclt_a ds_prob_agrclt_y ds_prob_nonagrclt_a ds_prob_nonagrclt_y ds_prob_tip_a ds_prob_tip_y ds_small_a ds_student ds_tip_a ds_tip_y ds_women ds_with_ins ds_without_ins ds_youth {
gen `var' = 10
label variable `var' "reference number for data source on `var', 10 if no info"
}
目的就是产生若干个dummy variables,每个变量的名字就是varlist后面的那些,每个赋值都为10,然后对于每个variable做个label....但是我运行了
stata 说
no variables defined
如果我改成
. local dummy "ds_agrclt_a ds_agrclt_y ds_first60_a ds_first60_y ds_first90_a ds_first90_y
> ds_gnrl ds_oppr_nonagrclt ds_oppr_tip ds_prob_agrclt_a ds_prob_agrclt_y ds_prob_nonagrcl
> t_a ds_prob_nonagrclt_y ds_prob_tip_a ds_prob_tip_y ds_small_a ds_student ds_tip_a ds_tip
> _y ds_women ds_with_ins ds_without_ins ds_youth"
foreach x of local dummy {
2. gen `var' = 10
3. label variable `var' "reference number for data source on `var', 10 if no info"
4. }
STATA又说
too few variables specified
r(102);
请问大家这个是什么原因呢?非常感谢


雷达卡





京公网安备 11010802022788号







