为了达到你的需求,你可以先创建一个新的变量来指示样本是否满足年龄条件(即大于等于50岁),然后在计算平均数时使用`if`语句。以下是如何操作:
```stata
// 创建一个新变量 age_flag 来指示每个人是否大于等于 50 岁
gen age_flag = (age >= 50)
// 使用 bysort hhid: egen mean_x=mean(x) 如果 age_flag 等于1(即样本满足年龄条件)
bysort hhid: egen mean_x = mean(x if age_flag == 1)
```
这将会计算每个`hhid`内,50岁以上的人的`x`值均值,并将这个平均数赋给该组内的每个人。但是要注意,如果某一个`hhid`下没有大于等于50岁的人,则`mean_x`将被设定为缺失值。
为了处理这种情况(即当某个城市中没有人满足年龄条件时,你可能需要设置一个默认值),你可以使用 `egen, missing()` 和 `if` 语句一起:
```stata
bysort hhid: egen mean_x = mean(x if age_flag == 1), missing
// 如果mean_x是缺失的(即没有人满足年龄条件)则赋以某个缺省值,比如0或者使用总样本均值等
replace mean_x = 缺省值 if mean_x == .
```
这样,即使在没有符合条件数据的情况下,你也可以避免缺失值带来的后续问题。
此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用