cap program drop sltop
program define sltop
version 13.0
syntax varname , Select(numlist min=1 max=1) //exp: sltop year , select(10)
global n=`select' //取出每组前n行
*------------------------------------------------------
tempvar id
tempvar select
egen `id'=group(`varlist') //标识组的变量
gsort `id'
gen byte `select'=0
loc j=1
loc i=0
while `j'<=_N {
if `id'[`j'] ~= `i' {
loc k=1
while (`k'<=$n) & (`j'<=_N ) & (`k'>0) {
qui replace `select'=1 in `j' //注意replace v=100 in 1和v[1],后者用于返回值
loc ++k
loc ++j
if (`id'[`j']-`id'[`j'-1]) ~= 0 {
loc k=-1
loc a=`1'[`=`j'-1']
dis _n in g "原文件变量" in w "`1'" in g "第`j'个观察值" in w "`a'" _n in g ///
"所在组别记录数<=设定的保留数,将全部保留!"
}
cap program drop sltop
program define sltop
version 13.0
syntax varlist , Select(numlist min=1 max=1) //exp: sltop year , select(10)
tempvar id
bysort `varlist' : gen `id'=_n
keep if `id'<=`select'