dxystata 发表于 2013-11-27 22:22 
如何自动给新产生的变量label values呢?
在原程序基础上直接添加红字部分:
local var "var1 var2" //指定变量
foreach v of var `var' {
tempvar v1 v2 freq no
gen `v1'=substr(`v',1,1)
gen `v2'=substr(`v',2,1)
gen n`v'=2
replace n`v'=1 if `v1'!=`v2'
gen `no'=_n
bysort `v': gen `freq'=_N
quietly sum `freq'
local max=r(max)
replace n`v'=0 if `freq'==`max' & n`v'!=1
sort `no'
preserve
tempvar n
bysort `v' n`v':gen `n'=_n
keep if `n'==1
local N=_N
forvalue i=1/`N' {
local lab=`v'[`i']
local val=n`v'[`i']
local labval`v'=`"`labval`v'' `val' "`lab'""'
}
restore
label define l`v' `labval`v''
label value n`v' l`v'
}
结果如下:
由于对应变量var2中BB和CC在nvar2中的值都取0,因此建立数值标签后均显示为cc