问题
- 因为发明专利是累计数量,所以笔者希望对同一证券名称的缺失值用其上一年的数值进行填充。所以对于下图中列出的缺失值应该不予处理。如果直接使用
replace 发明专利数量=发明专利数量[_n-1] if 发明专利数量==.命令,会出现“科志股份”的缺失值全部被填充为19,“金浔股份”和“泰龙互联”、“爱依养老”的数值全部被填充为24。

解决办法(推荐carryforward)
- carryforward 命令把非缺失值从一个观察值向后推进,用前一个值来填补缺失值。
- 使用carryforward命令,需要先
ssc install carryforward, replace。
bys 证券代码 (year): carryforward 发明专利数量, replace //分组填充
- 原始数据

- 处理后的结果:

参考办法(autofill,backward不推荐)
- 如果每个分组变量中不全是缺失值,可以试试这种办法,否则会出现下面第三章图片(结合本文第一张图片)的错误。
- 如果需要对多个缺失值同时做上述处理,比如还需要对“发明专利数量合计(也是累计数)”做如此处理,可以只使用下面一共代码即可。
- 先下载对应命令:
ssc install autofill,replace
encode 证券代码,gen(code)
autofill 发明专利数量 公司专利数量合计, backward groupby(code)
- 原始构造数据:

- 处理之后的结果:

- 但是将一些本不该填充的缺失值填充了。

参考文章
- 参考:stata缺失数据如何处理、https://zhuanlan.zhihu.com/p/77609040
- Stata数据处理:缺失值填充-autofill-carryforward
版权声明:本文为Triumph19原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。