bysort id: g n=_n
sort n id
g p=_n
sort id p
by id: egen q=min(p)
sum id if n==1
local m=r(N)
g min=0
forv i=1(1)`m'{
mkmat x if q==`i',mat(a)
mkmat y if q==`i',mat(b)
local s=.
local r=rowsof(a)
forv j=1(1)`r'{
forv k=1(1)`r'{
local t=abs(el(b,`j',1)-el(a,`k',1))
if `t'<`s' local s=`t'
}
replace min=`s' if q==`i'&y==el(b,`j',1)
}
}
replace min=. if y==.
keep id x y min
*这样可以更简洁一些(生成矩阵时不要使用数据库的变量名)
[此贴子已经被作者于2009-3-2 12:00:21编辑过]