全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
4357 1
2015-06-02
求问论坛各位,我想对如下数据进行分组:
stkcd_new        var1
1        .1975
1        .2222
1        .3052
1        .1975
1        .2491
1        .1404
1        .2719
1        .2222
1        .1975
1        .196
1        .2222
1        .1975
1        .196
1        .1975
2        .2987
2        .2119
2        .2987
2        .2061
2        .1837
2        .2964
2        .2119
2        .2119
2        .2964
2        .1837
2        .2987
2        .2964
2        .2964
2        .2987
2        .1545
2        .265
2        .2964
2        .2987
3        .4032
3        .4032
3        .4032
4        .404
4        .404
4        .1973
4        .404
4        .404


要求按每个stkcd_new的取值将var1从小到大分为10组,每组数量相同,有余数的放入最高组。

比如当stkcd_new取值1的时候若有14个var1的观测值。那么前1到9组每组取1个,第10组要取最高的后5个值。请问这样该如何实现。
注意是前面九组的取值都等于总量除以10后所得除数的整数部分,而剩下的取值全都归于最后一组。
由于需要对stkcd_new进行分组,所有命令还必须等于by等同时使用才行。
先谢过啦!
二维码

扫码加我 拉你入群

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

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

全部回复
2015-6-2 22:46:14
画了下数据结构然后自己解决了,写了一小段程序。贴出来分享下。

sort stkcd_new var1
bys stkcd_new : gen rank=_n
bys stkcd_new : gen num=_N
gen floor = floor(num/10)                                                                //取组内总数与10的除数的整数部分
gen break_num = floor * 9                                                        //生成变量等于前九组观测值之和
gen break_dummy = (rank>break_num)                 //表示位于前九组还是第十组的哑变量

gen group = 10 if break_dummy==1
replace group = ceil(rank/floor) if  break_dummy==0                //前九组观测值所处位置与整数部分的商再向上取整数既得到所在组的位置
tab group stkcd_new

话说把数据结构画出来真的有助于解决问题,
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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