楼主: 阿狸与桃子
4066 1

[数据管理求助] stata等量分组,余数列入最后组如何实现 [推广有奖]

  • 8关注
  • 5粉丝

副教授

16%

还不是VIP/贵宾

-

威望
0
论坛币
15879 个
通用积分
179.3253
学术水平
31 点
热心指数
34 点
信用等级
19 点
经验
2473 点
帖子
379
精华
0
在线时间
747 小时
注册时间
2013-11-13
最后登录
2020-1-31

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求问论坛各位,我想对如下数据进行分组:
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等同时使用才行。
先谢过啦!
二维码

扫码加我 拉你入群

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

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

关键词:Stata 如何实现 tata stkcd 从小到大 如何

画了下数据结构然后自己解决了,写了一小段程序。贴出来分享下。

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

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

使用道具

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

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

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

GMT+8, 2024-5-6 09:02