楼主: ToHebe
1711 2

[数据管理求助] 关于创建新变量 条件语句的一个问题 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

70%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
50 点
帖子
1
精华
0
在线时间
3 小时
注册时间
2019-10-8
最后登录
2019-10-9

楼主
ToHebe 发表于 2019-10-8 10:57:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有一个如下的数据库
  Var0  Var1  Var2  
1  A     500    23
2  A    1300  323
3  A    900    38283
4  A    800    232

5  B     600    93
6  B    100    99
7  B    90      7
8  B    8800    64


想在每一个Var0组内创建一个新的Var3 值等于 在Var1 取最大值时 Var2 的值

比如 对于Var0=A 来说 Var3 = 323 , 因为这时候Var1 是组内最大值 同理 对于Var0=B Var3=64
我用过 bysort Var0: egen max = max(Var1)
           bysort Var0: gen Var3=Var2 if Var1==max
           bysort Var0 : replace Var3 == max(Var3)
第二步做完 我的Var3 除了Var1 最大值的时候等于Var2, 其他都是.  
第三步我想在组内把.值的Var3 换成 组内Var3最大值 但是语句显示错误

想请问一下这种情况什么语句会有效果? 或者有没有语句可以直接让我在组内 生成Var3 = Var1取最大值时的 Var2值

二维码

扫码加我 拉你入群

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

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

关键词:Stata

沙发
蓝色 发表于 2019-10-8 14:30:04
  1. bysort Var0: egen max = max(Var1)
  2. bysort Var0: egen Var3=sum(Var2*(Var1==max) )
复制代码

藤椅
蓝色 发表于 2019-10-8 14:39:28
  1. bysort Var0: egen max = max(Var1)
  2. bysort Var0: gen Var30=Var2 if Var1==max
  3. bysort Var0: egen Var3 = mean(Var30)
复制代码

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-1 15:10