You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Stata中如何识别并删除不符合观测条件的整个set分组?

在Stata中按组筛选并移除不符合条件的观测

要实现你要求的——保留每个set分组中恰好包含1个Var2=1和2个Var2=0的观测,不符合条件的整个组全部删除——可以通过以下几步轻松完成:

步骤1:计算每组中Var2=1Var2=0的观测数

先按set分组,用egen命令生成两个临时变量,分别统计每组里Var2等于1和0的数量:

bysort set: egen count1 = total(Var2 == 1)
bysort set: egen count0 = total(Var2 == 0)
  • bysort set:告诉Stata按set变量分组处理数据
  • total(Var2 == 1):统计组内满足Var2=1的观测个数,结果存入count1
  • 同理,count0统计组内Var2=0的观测个数(缺失值不会被计入统计)

步骤2:移除不符合条件的组

筛选出同时满足count1=1count0=2的观测,删除所有不满足该条件的行(这样整个不符合要求的set组就会被全部移除):

drop if count1 != 1 | count0 != 2

步骤3:清理临时变量

完成筛选后,可以删掉刚才生成的临时统计变量,保持数据整洁:

drop count1 count0

验证效果

用你提供的示例数据测试的话:

  • set=1count1=1count0=2,符合条件,保留所有3条观测
  • set=2count1=2count0=1,不符合规则,会被全部删除
  • set=3count1=1count0=2,符合条件,保留
  • set=4count1=0count0=2(最后一条Var2缺失,不被计入0),不符合规则,会被全部删除

这样就完美实现了你要的需求~

内容的提问来源于stack exchange,提问作者Student

火山引擎 最新活动