|
************
处理代码的问题
g sic2=sic/100
g newsic=int(sic2)
************上面这个太简单,假设您的代码都是四位数,数值型
您的问题,我觉得颇难,因为您虽说从1995年开始,那么1995年时,往前推过去五年吗?
还有,过去五年,是观测的期间是五年? 还是六年?
问题的难度在于假设每一年,1995年时,那么要得出1990-1994年的吗
1996年时,则要得出1995-1999年的…
简言之,这属于固定时间区间的跳动…
其实有一种最快的方式,虽然那是个笨方法,但与其在想怎么用指令编程,
不如一年一年拆资料,然后把您要观测的时间区段,再整合成一套资料,
换句话说,就是每过去五年的资料,每一年给它算一次,那就好了!
以下是我利用Stata中的资料,去模拟您的状况,然后计算的结果,您参考看看!
***************
webuse pennxrate
***************
*34年,151国*****这里的id为151国家,这个变量,等同于您sic前两码相同的变量
*我假设从第9年开始观测,含这一年,也就是第 5 6 7 8 9 【过去五年】年
*那么同理,6 7 8 9 10 您知道意思的
*然后一路到30 31 32 33 34
***************
tab year,g(year)
local j 0
local p 0
local q 0
local r 0
forv i=5/30{
local j=`i'+1
local p=`i'+2
local q=`i'+3
local r=`i'+4
g sw5`i'=year`i'+year`j'+year`p'+year`q'+year`r'
bys id: egen p80c`i'=pctile(ppp) if sw5`i'==1,p(80)
}
**********************
*sw系列的变量创建就是一种0-1指标,代表该年度应该进去,即是过去五年
*ppp就是您所谓的某一变量
*p80c系列就是您要的
*您如果要套用,我个人认为年度那边的跳动要注意,请修改成您要跳动的时间区间
最后,一直到现在才有空回您这个帖子!
原先我是打算放弃的! 因为您都没给资料,只给了sic代码,然后又一大堆,然后我又不清楚时间区段,
难不成要我自己设计?
【我这不是在对您说教,而是说真的,我有时不爱回答问题,大多是这种情况】
其实这个问题不难,拆解资料,或者弄到mata去做,会快很多,
但我总在想,如果采用变量的处理,那比较有挑战性,而且似乎也符合Stata的特色。
也许我提供的程序不是很完美,也或许对您没啥帮助,
但就我自己而言,或许透过这些演练与对问题的回答,
让我对Stata好像有些许更进一步的了解!
总之! 参考看看!
|