dxystata 发表于 2013-2-23 22:42 
local f "x y z"
foreach v of varlist `f' {
qui count if `v'==0
多谢@dxystata 版主支招, 我好好研究研究!
您这招更妙,连sum的结果输出表都省了!
以下是对@dxystata 版主 提供的方案的注释
==================================================
local f "x y z"
foreach v of varlist `f' {
qui count if `v'==0 // qui 是quietly的缩写, 意思是不在输出窗口显示计算结果
if r(N) >0 { // r(N) 返回count命令的结果, 如果局部宏`v'代表的变量含有零值, 则 r(N)>0
gen ln_`v' = ln( 1 + `v' )
label var ln_`v' "ln(1+`v')"
}
else {
gen ln_`v' = ln( `v' )
label var ln_`v' "ln(`v')"
}
order ln_`v', after( `v' )
}
===================================================