楼主: dick50譁
26649 8

[数据管理求助] 关于STATA数据分组并赋值的问题~ [推广有奖]

  • 1关注
  • 0粉丝

已卖:52份资源

高中生

72%

还不是VIP/贵宾

-

威望
0
论坛币
242 个
通用积分
3.5444
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
542 点
帖子
30
精华
0
在线时间
26 小时
注册时间
2014-10-21
最后登录
2017-3-10

楼主
dick50譁 学生认证  发表于 2015-12-6 21:02:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

我欲实现这样一个stata操作:在各个“地区”中,按照“产品数量”从低到高分成五等份,并且相应赋值1-5,应该如何命令呢?
我自己想的程序如下:


sort area amount
forvalues area=1/28  {
xtile amount5q=amount,nquantile(5)
}


但是运行结果不对哦?~~~~~~(>_<)~~计量渣渣一枚,求大神指点,不胜感激!!


二维码

扫码加我 拉你入群

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

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

关键词:STATA数据 Stata 数据分组 tata forvalues 不胜感激 amount 产品 程序 如何

沙发
夏目贵志 发表于 2015-12-6 23:41:38
改成
forvalues area=1/28  {
    xtile amount5q=amount if area==`area',nquantile(5)
}
试试?

藤椅
dick50譁 学生认证  发表于 2015-12-7 12:37:47
夏目贵志 发表于 2015-12-6 23:41
改成
forvalues area=1/28  {
    xtile amount5q=amount if area==`area',nquantile(5)
十分感谢您的建议!我运行了一下,之前的问题还是存在,即每个地区并不是均匀的五等份,这个;另外,您的这个程序里,仅area==1时有数据,而地区2开始就没有了,原因大概是“amount5q”变量名已经被第一次循环中使用过了,这应该如何解决呢?求大神解答!

板凳
夏目贵志 发表于 2015-12-7 22:50:24
dick50譁 发表于 2015-12-7 12:37
十分感谢您的建议!我运行了一下,之前的问题还是存在,即每个地区并不是均匀的五等份,这个;另外,您的 ...
cap drop amount5q
gen amount5q=.
forvalues area=1/28  {
    xtile amount5q`area'=amount if area==`area',nquantile(5)
}
forvalues area=1/28  {
    replace amount5q=amount5q`area' if area==`area'
    drop amount5q`area'
}
试试?

报纸
dick50譁 学生认证  发表于 2015-12-8 15:58:39
夏目贵志 发表于 2015-12-7 22:50
cap drop amount5q
gen amount5q=.
forvalues area=1/28  {
十分感谢!运行的结果是:每个地区都并不是严格的五等份。如地区1,五组样本量分别为:  50、41、47、54、43。您觉得有没有可能是“nq”命令是按照最大最小值的差值来进行五等分的?所以每组的样本量并不是严格相等的?- - 如果是按照目前这个程序来进行分组的话,是否合理呢??谢~谢~


地板
夏目贵志 发表于 2015-12-9 22:30:59
dick50譁 发表于 2015-12-8 15:58
十分感谢!运行的结果是:每个地区都并不是严格的五等份。如地区1,五组样本量分别为:  50、41、47 ...
不是能分的问题的具体看你的数据。如果数据是1 2 2 2 2 3,必然无法三等分。所以一般来说不用非要追求等分的。

7
蟾宫客1020 学生认证  发表于 2018-10-25 21:23:46
楼上两位老师好,我运行后的结果是program error:code follows on the same line as open brace.请问怎么解决?

8
燕语呢喃lhy 发表于 2020-4-12 14:51:43
夏目贵志 发表于 2015-12-7 22:50
cap drop amount5q
gen amount5q=.
forvalues area=1/28  {
感谢前辈的code。 在现有的基础上,做了一点点小改进,希望能帮助后来者:
foreach i of local gp {
                egen quin`i' = cut(income) if group ==`i', group(5)
                replace quin = quin`i' if group ==`i'
                drop quin`i'
}
将前辈两组code合并在一起,可以避免分组过多,数据矩阵过大。

9
Tyyyyyyy 发表于 2022-2-24 20:24:50
蟾宫客1020 发表于 2018-10-25 21:23
楼上两位老师好,我运行后的结果是program error:code follows on the same line as open brace.请问怎么解 ...
请问解决了吗~

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-9 03:09