Stata中按区域计算处理/未处理组Value总和的技术问题
解决方案
要在每行显示对应区域内处理组(Treatment=1)和未处理组(Treatment=0)的Value总和,避免出现NA,你需要在egen total()函数内部指定求和条件,而非在egen命令后追加if判断。这样每个区域分组内的所有行都会填充对应组别的总和值,不会因自身Treatment状态缺失数据。
方法一:通过指示变量实现条件求和
利用(Treatment == 1)生成0/1指示变量,和Value相乘后,仅符合条件的Value会被计入总和:
bysort Area: egen total_treat1 = total(Value * (Treatment == 1)) bysort Area: egen total_treat0 = total(Value * (Treatment == 0))
方法二:用cond()函数明确筛选求和行
通过cond()函数直接指定符合条件时取Value,否则取0,效果与方法一完全一致:
bysort Area: egen total_treat1 = total(cond(Treatment == 1, Value, 0)) bysort Area: egen total_treat0 = total(cond(Treatment == 0, Value, 0))
效果验证
以你的数据集为例,运行代码后:
- Area 1的
total_treat1固定为1.1(该区域Treatment=1的Value总和),total_treat0固定为9.2(6.7+2.5) - Area 2的
total_treat1为2.5,total_treat0为3.6 - Area 3的
total_treat1为10.7(2.9+7.8),total_treat0为3.4
所有行都会显示对应区域的两个总和值,不会出现NA。
内容的提问来源于stack exchange,提问作者swediot
相关产品推荐
相关产品推荐

