You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Stata中用by:前缀基于组内多观测条件生成变量?

解决Stata按组判断是否存在多类观测的问题

问题根源

你之前的代码逻辑错误:单条观测中Domestic==1和Foreign==1不可能同时成立(一辆车只能是国产或进口),所以无论用generate还是replace,都无法触发条件,导致全缺失或无变化。

正确解法

我们需要判断整个组内是否同时存在国产(foreign=0)和进口(foreign=1)车辆,直接利用原变量foreign即可实现,无需额外生成冗余变量,以下是两种简洁的实现方式:

方法1:通过组内极值判断

sysuse autotype, clear
sort rep78
by rep78: generate both_types = (min(foreign) == 0 & max(foreign) == 1)
  • 逻辑:如果组内foreign的最小值为0(存在国产车辆)且最大值为1(存在进口车辆),则both_types赋值为1,否则自动为0。

方法2:统计组内类型数量

sysuse autotype, clear
sort rep78
by rep78: egen n_types = nvals(foreign)
generate both_types = (n_types == 2)
drop n_types
  • 逻辑:用egen nvals()统计组内foreign的不同取值数量,若数量为2则说明两种类型都存在,both_types设为1,否则为0。

结果验证

运行代码后查看分组结果:

  • rep78=1组:所有车辆均为国产(foreign=0),both_types=0
  • rep78=5组:同时存在国产和进口车辆,both_types=1
    完全符合你的预期需求。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 02:47:10