全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
20799 4
2016-01-17
悬赏 3 个论坛币 已解决
111.jpg 222.jpg 数据如图,图1 是原始数据的样子,求问各位大神如何用stata实现每个上市公司从上市年份直到2015年复制注册地地址,若中间注册地发生变化,则复制变化后的地址(如图2)。用stata循环怎么操作呢?stata小白论坛币不多,望各位不吝赐教,万分感谢!

最佳答案

gongshundaren 查看完整内容

把数据先整理成这样的结构 id year address 1 2001 河南 1 2003 河南 1 2010 河北 2 2002 新疆 2 2003 新疆 2 2004 内蒙 3 1999 重庆 3 2010 重庆 4 2008 四川 5 2003 安徽 5 2014 福建 预先在stata或者excel里把数据整理成代码id和年份year的这样的标准格式,然后按照下面步骤 sort id year //然后按照id和year排序 xtset ...
二维码

扫码加我 拉你入群

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

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

全部回复
2016-1-17 10:54:07
把数据先整理成这样的结构
id    year    address
1     2001   河南
1     2003   河南
1     2010   河北
2     2002    新疆
2     2003    新疆
2     2004    内蒙
3     1999    重庆
3     2010    重庆
4     2008    四川
5     2003    安徽
5     2014    福建

预先在stata或者excel里把数据整理成代码id和年份year的这样的标准格式,然后按照下面步骤

sort id year   //然后按照id和year排序
xtset id year  //设定面板样本和时间变量
ssc install tsfill,replace  //安装时间填充程序,仅需执行一次
tsfill    //填充时间面板
sort id year   //然后按照id和year排序
bys id:replace address=address[_n-1] if address=="" &  address[_n-1]!=""  //按照id,如果address是空值,且上一个不是空值,则用上一个填充替换,这个是自动循环的




*这些最好放在do文件里执行





二维码

扫码加我 拉你入群

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

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

2016-1-18 13:42:39
谢谢谢谢~ 后来自己摸索了一下 发现先用一个含有连续时间序列的表格 按stock year merge一下 ,就会先把时间填充了。再按您一样的方法bys id:replace address=address[_n-1] if address=="" &  address[_n-1]!=""填充就ok了。
再次感谢您的帮助!~
二维码

扫码加我 拉你入群

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

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

2016-1-18 13:44:12
gongshundaren 发表于 2016-1-17 16:33
把数据先整理成这样的结构
id    year    address
1     2001   河南
谢谢谢谢~ 后来自己摸索了一下 发现先用一个含有连续时间序列的表格 按stock year merge一下 ,就会先把时间填充了。再按您一样的方法bys id:replace address=address[_n-1] if address=="" &  address[_n-1]!=""填充就ok了。
再次感谢您的帮助!~
二维码

扫码加我 拉你入群

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

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

2018-8-11 03:03:07
gongshundaren 发表于 2016-1-17 10:54
把数据先整理成这样的结构
id    year    address
1     2001   河南
帮助解决了类似问题。感谢!
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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