楼主: 破碎
6656 14

[数据管理求助] 怎么取多个变量间排行第二的值 [推广有奖]

11
芒果圣代双皮奶 发表于 2019-11-25 14:49:42
黃河泉 发表于 2017-4-16 10:53
其实后来从美国 Stata 论坛学到更简洁之方法:
老师,您好,我按照您的这个方法,但是结果显示错误,因为我的数据存在小数位,想请问一下老师,如果数据有小数位应该用什么命令呢?

12
芒果圣代双皮奶 发表于 2019-11-25 15:13:54
austen06 发表于 2017-4-17 00:10
这个是Nicholas J. Cox写的package啊
请问一下,我的数据是float,在运行rowsort 时stata提示需要int型数据,请问这需要怎么办呀?

13
黃河泉 在职认证  发表于 2019-11-25 15:51:57
芒果圣代双皮奶 发表于 2019-11-25 14:49
老师,您好,我按照您的这个方法,但是结果显示错误,因为我的数据存在小数位,想请问一下老师,如果数据 ...
你若要问程序,永远附上相关资料 (请不要用截图);若附上资料,永远用 dataex 印出资料。
•        先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。
•        请参考说明 https://bbs.pinggu.org/thread-5048204-1-1.html

14
sungmoo 发表于 2019-11-25 19:44:00
*若每行x*取值互异
egen r1=rowmax(x*)
foreach v of var x*{
g d`v'=cond(`v'-r1<0,`v',.)
}
egen r2=rowmax(d*)
keep id x* r2

*若每行x*最大值不唯一
egen r1=rowmax(x*)
foreach v of var x*{
g d`v'=cond(`v'-r1<0,`v',.)
g s`v'=(`v'-r1)==0
}
egen rs=rowtotal(s*)
egen rm=rowmax(d*)
g r2=cond(rs>1,r1,rm)
keep id x* r2
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

15
sungmoo 发表于 2019-11-25 19:44:42
本帖因审核重复了。

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

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