全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
7810 10
2015-08-27
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怎么做?
并且有了这个百分比以后,怎么快速识别出哪个人(前面还有一列变量),相对于其他人来说进步比较大?
附件列表
1.jpg

原图尺寸 109.97 KB

1.jpg

二维码

扫码加我 拉你入群

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

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

全部回复
2015-8-27 22:52:32
用by这个命令分组生成新变量,
bysort group: gen growth=cond(_n==1,1,(x[_n]-x[_n-1])/x[_n-1])
至于你所说的第二个问题,你能给出判断依据么= =可以用if判断=
二维码

扫码加我 拉你入群

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

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

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])
至于你 ...
二维码

扫码加我 拉你入群

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

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

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。

怎么做呢?
二维码

扫码加我 拉你入群

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

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

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)


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

扫码加我 拉你入群

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

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

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 //获得进步量排名
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群