全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
936 11
2021-12-26
悬赏 20 个论坛币 已解决
WechatIMG469.jpeg

各位大佬,我想分别计算同一公司本年相较于上一年增加或减少的id,id是空格间隔的字符,红色是想要得到的数据。
求指教,感谢~
stata或vba计算最好~

最佳答案

qianchen 查看完整内容

clear input year str30(stock id 增加 减少) 2008 02 "2269" 2009 02 "2269 2315" "2315" 2010 02 "2269 " "" "2315" 2011 02 "2269 2399" "2399" 2012 02 "2269 2399 122" "122" 2012 02 "122" "" "2269 2399" end gen index= regexm(id[_n],id[_n-1]) if _n!=1 gen added=subinstr(id[_n],id[_n-1],"",.) if index==1 gen reduced=subinstr(id[_n-1],id[_n],"",.) if index==0
二维码

扫码加我 拉你入群

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

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

全部回复
2021-12-26 15:50:06
clear
input year str30(stock id 增加 减少)
2008 02 "2269"
2009 02 "2269 2315" "2315"
2010 02 "2269 "  ""            "2315"
2011 02 "2269 2399" "2399"
2012 02 "2269 2399 122" "122"
2012 02 "122" "" "2269 2399"
end
gen index= regexm(id[_n],id[_n-1])  if _n!=1
gen added=subinstr(id[_n],id[_n-1],"",.) if index==1
gen reduced=subinstr(id[_n-1],id[_n],"",.) if index==0
二维码

扫码加我 拉你入群

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

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

2021-12-28 10:47:21
qianchen 发表于 2021-12-27 11:19
clear
input year str30(stock id 增加 减少)
2008 02 "2269"
您好,感谢前辈的帮助~我试了下基本可以得到想到的结果,大方向是对的。
可能由于我的表述不清楚,运行结果存在两个问题:
1.没有控制同一公司;2.同一公司的计算结果部分存在错误
恳请您再指导一下,麻烦了,感谢~
数据形式是year stock id 面板数据,需求:计算每家公司本年相较于上一年增加的id和减少的id。id中存在重复值。
二维码

扫码加我 拉你入群

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

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

2021-12-28 10:47:39
前辈好:我增加了控制同一年份:if stock==stock[_n-1]但是计算结果还是有问题,例如第一家公司2014年和2015年的数据。
麻烦您了!
屏幕快照 2021-12-28 上午11.03.17.png
附件列表
二维码

扫码加我 拉你入群

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

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

2021-12-28 11:43:00
还有一个关键点:同一年份id存在既增加、又减少的情况,比如1 2 2到1 2 3,减少了一个2、增加了一个3。
二维码

扫码加我 拉你入群

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

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

2021-12-28 11:43:28
爱汽水不爱果汁 发表于 2021-12-28 10:47
您好,感谢前辈的帮助~我试了下基本可以得到想到的结果,大方向是对的。
可能由于我的表述不清楚,运行结 ...
还有一个关键点:同一年份id存在既增加、又减少的情况,比如1 2 2到1 2 3,减少了一个2、增加了一个3。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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