楼主: 芬芬anna
6843 10

[一般统计问题] stata 年度百分比排名怎么做 怎么识别年度进步比较大的变量 [推广有奖]

  • 0关注
  • 1粉丝

大专生

26%

还不是VIP/贵宾

-

威望
0
论坛币
2635 个
通用积分
65.0652
学术水平
1 点
热心指数
2 点
信用等级
0 点
经验
348 点
帖子
32
精华
0
在线时间
51 小时
注册时间
2015-3-6
最后登录
2016-8-10

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
year        total        pctotal
2002        11        1
2002        4        0.363636364
2002        4        0.363636364
2002        4        0.363636364
2002        3        0.272727273
2002        3        0.272727273
2002        3        0.272727273
2002        3        0.272727273
2002        3        0.272727273
2002        3        0.272727273
2002        2        0.181818182
2002        2        0.181818182
2002        1        0.090909091
2002        1        0.090909091
2002        1        0.090909091
2002        1        0.090909091
2002        1        0.090909091
2002        1        0.090909091
2002        1        0.090909091
2002        1        0.090909091
2002        1        0.090909091
2002        1        0.090909091
2002        1        0.090909091
2002        1        0.090909091
2002        1        0.090909091
2002        1        0.090909091
2003        9        1
2003        5        0.555555556
2003        5        0.555555556
2003        5        0.555555556

有很多年份,需要根据不同年份内的total数据计算百分比排名,年度内最大的为1,怎么做呢?后面我用excel算的pctotal=1-($b$1-b2)/$b$1,不知道这种算法对不对,而且每一年都这样手动写公式太慢,且容易出错。
求高手指导,stata怎么做?
并且有了这个百分比以后,怎么快速识别出哪个人(前面还有一列变量),相对于其他人来说进步比较大?
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 百分比 怎么做 用excel 百分比

1.jpg (109.97 KB)

1.jpg

回帖推荐

raiderqi 发表于2楼  查看完整内容

用by这个命令分组生成新变量, bysort group: gen growth=cond(_n==1,1,(x[_n]-x[_n-1])/x[_n-1]) 至于你所说的第二个问题,你能给出判断依据么= =可以用if判断=
沙发
raiderqi 发表于 2015-8-27 22:52:32 |只看作者 |坛友微信交流群
用by这个命令分组生成新变量,
bysort group: gen growth=cond(_n==1,1,(x[_n]-x[_n-1])/x[_n-1])
至于你所说的第二个问题,你能给出判断依据么= =可以用if判断=
已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 15 热心帮助其他会员
芬芬anna + 1 + 1 + 1 精彩帖子
夏目贵志 + 5 + 1 热心帮助其他会员

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

使用道具

藤椅
laojianga 发表于 2015-8-28 00:16:03 来自手机 |只看作者 |坛友微信交流群
raiderqi 发表于 2015-8-27 22:52
用by这个命令分组生成新变量,
bysort group: gen growth=cond(_n==1,1,(x[_n]-x[_n-1])/x[_n-1])
至于你 ...

使用道具

板凳
芬芬anna 发表于 2015-8-28 10:46:46 |只看作者 |坛友微信交流群
raiderqi 发表于 2015-8-27 22:52
用by这个命令分组生成新变量,
bysort group: gen growth=cond(_n==1,1,(x[_n]-x[_n-1])/x[_n-1])
至于你 ...
排名升的比其他变量快,就算是进步大,希望删选出进步最大的top 10。

怎么做呢?

使用道具

报纸
芬芬anna 发表于 2015-8-28 11:08:39 |只看作者 |坛友微信交流群
raiderqi 发表于 2015-8-27 22:52
用by这个命令分组生成新变量,
bysort group: gen growth=cond(_n==1,1,(x[_n]-x[_n-1])/x[_n-1])
至于你 ...
bysort group: gen growth=cond(_n==1,1,(x[_n]-x[_n-1])/x[_n-1])
这里有点问题,不好意思问题没表述清楚,生成的值应该是1-(x组内最大值-x[_n-1])/x组内最大值),应该怎么写呢?
后来写出来了,多加了一步:
bysort year: egen maxtotal=max(total)
   bysort year: gen pctotal=cond(total>=maxtotal,1,1-(maxtotal-total)/maxtotal)


谢谢前辈提的建议,但是怎么识别进步大的变量还是一个问题,跪求各位大神帮忙!

使用道具

地板
芬芬anna 发表于 2015-8-28 13:25:23 |只看作者 |坛友微信交流群
搞出来了,贴给出现同样问题的朋友:
  bysort year: egen maxtotal=max(total)
   bysort year: gen pctotal=cond(total>=maxtotal,1,1-(maxtotal-total)/maxtotal) //求出年度内百分比排名
sort unid year
   bysort unid: gen vary_pctotal=cond(pctotal[_n+1]>=pctotal[_n],pctotal[_n+1]-pctotal[_n],0) //求出排名年度进步大小   
   collapse (sum) vary_pctotal, by (sume unid) //加总进步量
   gsort -vary_pctotal //获得进步量排名

使用道具

7
raiderqi 发表于 2015-8-28 20:13:55 |只看作者 |坛友微信交流群
芬芬anna 发表于 2015-8-28 13:25
搞出来了,贴给出现同样问题的朋友:
  bysort year: egen maxtotal=max(total)
   bysort year: gen pct ...
左后两步你是想获得排名?
直接用egem中rank()这个命令生成排名,
另外由于首项=0,建议删掉起始的免得出什么问题(虽然一般不会出什么问题)。 。

使用道具

8
芬芬anna 发表于 2015-8-29 10:32:23 |只看作者 |坛友微信交流群
raiderqi 发表于 2015-8-28 20:13
左后两步你是想获得排名?
直接用egem中rank()这个命令生成排名,
另外由于首项=0,建议删掉起始的免得 ...
排名已经弄出来了,但每一年排名的名次,年度间没法比较,所以要化成百分比排名,可以进行年度间比较。

使用道具

9
raiderqi 发表于 2015-8-30 16:18:34 |只看作者 |坛友微信交流群
芬芬anna 发表于 2015-8-29 10:32
排名已经弄出来了,但每一年排名的名次,年度间没法比较,所以要化成百分比排名,可以进行年度间比较。
百分比排名(percentile ranking): 求某个数据的百分比排名,即是求比此数据小的数据个数除以与此数据进行比较的数据个数总数。
如果我没弄错的话应该是这样的。 。
bysort year: gen N=_N
gen perrank=rank/N

使用道具

10
我是梅梅 发表于 2018-5-23 11:01:25 |只看作者 |坛友微信交流群
芬芬anna 发表于 2015-8-28 13:25
搞出来了,贴给出现同样问题的朋友:
  bysort year: egen maxtotal=max(total)
   bysort year: gen pct ...
你好,我也遇到这个问题,如果total是负数该怎么排名呢?我将公式中的max换成min多方尝试,最后的排名不介于0和1之间,应该怎么做呢?非诚感谢

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-17 12:58