对stata数据中的缺失值分组进行处理(用非空前值填充、对累计值缺失值的处理)

问题

  • 因为发明专利是累计数量,所以笔者希望对同一证券名称的缺失值用其上一年的数值进行填充。所以对于下图中列出的缺失值应该不予处理。如果直接使用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)
  • 原始构造数据:
    在这里插入图片描述
  • 处理之后的结果:
    在这里插入图片描述
  • 但是将一些本不该填充的缺失值填充了。
    在这里插入图片描述

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值