楼主: zongtuhua
1507 2

[编程问题求助] stata生成变量问题 [推广有奖]

  • 3关注
  • 2粉丝

已卖:2份资源

本科生

82%

还不是VIP/贵宾

-

威望
0
论坛币
1434 个
通用积分
0.5960
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1128 点
帖子
27
精华
0
在线时间
233 小时
注册时间
2015-6-16
最后登录
2024-5-14

楼主
zongtuhua 发表于 2019-6-10 12:35:18 |AI写论文
50论坛币
最近在撰写毕业论文时遇到一个变量生成的stata编程问题,该变量是毕业论文里面的核心变量,但是一直没能求解出来,不知道各位老师能不能帮我看看,谢谢各位!
        问题描述如下(不知道有没有把问题描述清楚,我主要想知道生成ratio变量的stata程序):
原数据结构如下:
* Example generated by -dataex-. To install: ssc install dataex
clear
input byte(familyid gender) int income
1 1 200
1 0 150
2 1 300
2 0 250
2 0 350
2 1 400
4 0 300
4 1 200
end

FamilyID代表家庭编号,gender=1表示男性,我想求每个家庭里女性收入大于男性收入的概率(ratio),也就是先算第i个女性收入超过男性的概率,再计算各女性超过男性收入的平均值,以第二个家庭为例,第二个家庭第一个女性收入超过男性的概率为0(超过几个男性/男性总数),第二个家庭第二个女性收入超过男性的概率为0.5,所以第二个家庭ratio=(0+0.5)/2=0.25(ratio为各女性超过男性收入概率的平均值),最后得出的数据应为
* Example generated by -dataex-. To install: ssc install dataex
clear
input byte(familyid gender) int income float ratio
1 1 200   0
1 0 150   0
2 1 300 .25
2 0 250 .25
2 0 350 .25
2 1 400 .25
4 0 300   1
4 1 200   1
end




最佳答案

黃河泉 查看完整内容

感谢 Nick Cox 之建议:
关键词:Stata tata 生成变量 generated generate

沙发
黃河泉 在职认证  发表于 2019-6-10 12:35:19
感谢 Nick Cox 之建议:
  1. egen newid = group(familyid)
  2. su newid, meanonly
  3. local G = r(max)
  4. gen wanted = .

  5. quietly forval g = 1/`G' {
  6.     ranksum income if newid == `g', by(gender) porder
  7.     replace wanted = r(porder) if newid == `g'
  8. }

  9. list, sepby(familyid)
复制代码
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
ritaing + 20 + 4 + 3 + 5 + 3 精彩帖子

总评分: 经验 + 20  论坛币 + 4  学术水平 + 3  热心指数 + 5  信用等级 + 3   查看全部评分

藤椅
zongtuhua 发表于 2019-6-10 19:10:56
黃河泉 发表于 2019-6-10 18:26
感谢 Nick Cox 之建议:
谢谢黄老师,太感谢您啦

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

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