楼主: 葱葱饼干
2836 3

[回归分析求助] 用stata如何把子样本中满足条件的样本的均值分别赋给每一个子样本? [推广有奖]

  • 2关注
  • 4粉丝

已卖:3592份资源

本科生

75%

还不是VIP/贵宾

-

威望
0
论坛币
23467 个
通用积分
83.7593
学术水平
5 点
热心指数
6 点
信用等级
5 点
经验
1357 点
帖子
51
精华
0
在线时间
145 小时
注册时间
2013-11-15
最后登录
2025-3-26

楼主
葱葱饼干 学生认证  发表于 2017-3-6 17:26:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币


stata求助~我构建了区域变量hhid,每一个市的人都拥有相同的hhid,我通过bysort hhid: egen mean_x=mean(x)命令可以得到每一个市的x的均值并把它赋给每个人,但是我如何对这个语句进行修改,可以让我将每一个市中50岁以上人的x的均值赋给该市的所有人呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata tata stata求助 bysort mean 如何 样本

沙发
黃河泉 在职认证  发表于 2017-3-7 06:48:32
这个回答过了!

藤椅
tillzl 发表于 2019-12-1 09:57:29
楼主可以分享下是如何做的吗?谢谢

板凳
赵安豆 发表于 2024-8-31 15:35:14
为了达到你的需求,你可以先创建一个新的变量来指示样本是否满足年龄条件(即大于等于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学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-5 22:52