jzhyue 发表于 2009-12-10 15:20 
请路过的老师帮个忙:
在下经常利用如下代码处理数据,因此想将这段代码变成ado文件。
命令格式如stata命令格式 或其它格式
gsca m f r varlist [if] [in]
我用的代码如下(示例数据在附件中):
foreach vi in dans blzh rzh lch lh water {
egen `vi'std=std(`vi'), mean(0) std(1)
bys m f (r):egen `vi'e=mean(`vi'std)
bys m (f):egen `vi'mg=mean(`vi'e)
bys f (m):egen `vi'fg=mean(`vi'e)
gen `vi'sca=`vi'e-`vi'mg-`vi'fg
drop `vi' `vi'std
}
keep if r==1
drop r
试试把下面的代码保存为gsca.ado文件:
capture program drop gsca
program gsca, sortpreserve
version 10.0
args m f r
syntax varlist(min=1) [if] [in]
marksample touse
foreach vi in dans blzh rzh lch lh water {
egen `vi'std=std(`vi'), mean(0) std(1)
bys `m' `f' (r):egen `vi'e=mean(`vi'std)
bys `m' (f):egen `vi'mg=mean(`vi'e)
bys `f' (m):egen `vi'fg=mean(`vi'e)
gen `vi'sca=`vi'e-`vi'mg-`vi'fg
drop `vi' `vi'std
}
keep if `r'==1
drop `r'
end