我编写的命令如下
capture program drop gini2
program gini2
syntax varlist [if] [in] [,title(string)] //设置我们自己的命令格式
tempvar tinc tp p w pregini2 gini2 //设定tinc tp p w pregini2 gini2 七个变量为临时变量
marksample touse //生成一个0/1暂元,暂元名为touse
preserve //将内存中的数据暂封存,直到restore命令再复原
quietly{ //大括号后的命令将在后台执行,前台无显示
keep if `touse' //根据if后输入的条件得到一个子数据
sort `3' `4'
by `3' : egen `tinc'=sum(`1') //生成总收入,将总收入数据暂存在临时变量`tinc'中
if "`2'"==""{
local 2=1
} //如果没有人口变量,则默认为该变量为1
by `3' :egen `tp'=sum(`2')
gen `m'=`1'/`2'
sort `3' `m'
bysort `3': gen `p'= `2'/ `tinc'
bysort `3': gen `w'= `1'/ `tinc'
bysort `3'(`m'): gen `q'=sum(`1'/ `tinc')
by `3': egen `pregini2'= sum(`p' *(2*`p'-`w'))
gen `gini2'=1-`pregini2'
}
tabstat `gini2',stat(mean) by(`3')
restore
end
执行“gini2”命令后,总是报错
. gini2 Numdiv S0101a year
too few variables specified
r(102);