问题 因为发明专利是累计数量,所以笔者希望对同一证券名称的缺失值用其上一年的数值进行填充。所以对于下图中列出的缺失值应该不予处理。如果直接使用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/77609040Stata数据处理:缺失值填充-autofill-carryforward