Stata 删除缺少值的整个面板

Stata 删除缺少值的整个面板,stata,missing-data,panel-data,Stata,Missing Data,Panel Data,我正在处理一个面板数据集,其中缺少四个变量的值(在面板的开始、结束和中间)。我想删除缺少值的整个面板 这是迄今为止我尝试使用的代码: bysort BvD_ID YEAR: drop if sum(!missing(REV_LAY,EMP_LAY,FX_ASSET_LAY,MATCOST_LAY))==0 这段代码成功地删除了四个变量中任何一个缺少值的所有观察值,但保留了非缺少值的观察值 示例数据: Firm_ID Year REV_LAY EMP_LAY FX_ASSET_LAY

我正在处理一个面板数据集,其中缺少四个变量的值(在面板的开始、结束和中间)。我想删除缺少值的整个面板

这是迄今为止我尝试使用的代码:

bysort BvD_ID YEAR: drop if sum(!missing(REV_LAY,EMP_LAY,FX_ASSET_LAY,MATCOST_LAY))==0
这段代码成功地删除了四个变量中任何一个缺少值的所有观察值,但保留了非缺少值的观察值

示例数据:

  Firm_ID  Year  REV_LAY  EMP_LAY  FX_ASSET_LAY
  001      2001  80       25       120
  001      2002  75       .        122
  001      2003  82       32       128
  002      2001  40       15       45
  002      2002  42       18       48
  002      2003  45       20       50

在上面的示例数据中,我想完全删除panel
Firm_ID=001

您可以执行以下操作:

clear
input Firm_ID  Year  REV_LAY  EMP_LAY  FX_ASSET_LAY
  001      2001  80       25       120
  001      2002  75       .        122
  001      2003  82       32       128
  002      2001  40       15       45
  002      2002  42       18       48
  002      2003  45       20       50
end

generate index = _n
bysort Firm_ID (index): generate todrop = sum(missing(REV_LAY, EMP_LAY, FX_ASSET_LAY))
by Firm_ID: drop if todrop[_N]

list Firm_ID Year REV_LAY EMP_LAY FX_ASSET_LAY

   +-----------------------------------------------+
   | Firm_ID   Year   REV_LAY   EMP_LAY   FX_ASS~Y |
   |-----------------------------------------------|
1. |       2   2001        40        15         45 |
2. |       2   2002        42        18         48 |
3. |       2   2003        45        20         50 |
   +-----------------------------------------------+