模拟数据输入:
set obs 10
gen year = 1990 +_n
expand 100
gen size = 100+ 10*invnormal(uniform())
根据题意我最先想到的方法:
sort year
gen group = 1
forval i = 10(10)90 {
by year: egen p`i' = pctile(size), p(`i')
replace group = (`i'/10 + 1) if size > p`i'
}
drop p*
可能比较简单的方法:
sort year size
by year: gen group2 = ceil(10*_n / _N)
验证通过:
assert group == group2
不知是否满足你的要求?也请论坛达人支招!
[此贴子已经被作者于2008-11-17 11:13:16编辑过]
eblog 金币 +5 金钱 +50 魅力 +20 奖励 2008-11-16 9:15:40