全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
4528 8
2012-03-07
悬赏 5 个论坛币 已解决
数据是从NBER下的一个有关patent所属公司和其他信息的dta,大体结构如下

pdpass        pdpco1        source        begyr1        gvkey1        endyr1        pdpco2        begyr2        gvkey2        endyr2
32040490        65907        m2006        1995        65907        2001        135484        2002        135484        2005

pdpass最多有gvkey5,大部分只有一两个,后面就都missing了

我想要得到的结果大概是这样

pdpass         year           gvkey
32040490     1995          65907
32040490     1996          65907
32040490     1997          65907
............................
32040490     2001          65907
32040490     2002          135484
32040490     2003          135484
32040490     2004          135484
32040490     2005          135484

求高人指点,应该如何写命令,附上原始数据(后缀应为dta,但上传失败,改为txt)。注:有些pdpass的begyr和endyr是不连续的,比如endyr1 是1998, begyr2可能是2003.

dynass.txt
大小:(910.98 KB)

 马上下载

最佳答案

sungmoo 查看完整内容

use dynass, clear reshape long pdpco begyr endyr gvkey, i(pdpass source) keep if gvkey
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-3-7 16:54:55
use dynass, clear
reshape long pdpco begyr endyr gvkey, i(pdpass source)
keep if gvkey<.
expand endyr-begyr+1
bys pdpass gvkey: g year=begyr+_n-1
keep pdpass year gvkey
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-3-7 17:22:48
没看太懂,gvkey5和gvkey是什么关系?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-3-7 17:24:41
aolei 发表于 2012-3-7 17:22
没看太懂,gvkey5和gvkey是什么关系?
同一个公司不同时期用的gvkey,分别称作gvkey1,2,3,...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-3-7 19:56:26
做出来了,只是方法比较笨,要手动重复五次:
use dynass.dta
keep pdpass-endyr1
gen ny=endyr1-begyr1+1
expand ny
sort pdpass
bysort pdpass: gen year=begyr1-1+_n
rename gvkey1 gvkey
keep pdpass gvkey year

然后再keep begyr2-endyr2,drop missing做一次……最后五个merge到一块儿……

如果哪位高手有简洁的方法,5个币感谢优化
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-3-7 21:04:45
*试一试
use dynass.dta,clear
gen x=max(endyr1,endyr2,endyr3,endyr4,endyr5)
gen n=x-begyr1
expand n+1
bys pdpass:gen year=begyr1+_n-1
gen gvkey=gvkey1
forvalue i=2/5{
replace gvkey=gvkey`i' if begyr`i'<=year & year<=endyr`i'+1
}
keep pdpass year gvkey
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群