楼主: xingxf
22806 41

[编程问题求助] 数据分组并标记 [推广有奖]

21
sungmoo 发表于 2013-1-29 21:05:05
但如果数据中有很多值相等的话这种做法就未必精准。
这个说到底,是“分组”的规则问题。其中,操作者做出何种分组规定是首要的,这种规定是不受也不该受软件约束的;或者说,是根据规则使用软件(找到恰当的命令),而不是根据软件来确定分组规则。

只要事先给出明确的规则,利用软件实现分组其实是很次要的问题。

22
xingxf 发表于 2013-1-29 21:12:43
sungmoo 发表于 2013-1-29 21:05
这个说到底,是“分组”的规则问题。其中,操作者做出何种分组规定是首要的,这种规定是不受也不该受软 ...
恩。我觉得这个帖子能帮助不少人吧。我觉得你给我启发最大的就是那个_n/_N,用最简单的的功能解决问题,这种思路我真是挺佩服的。

23
liangsky 发表于 2013-1-29 21:38:33
如果碰到时间不是连续的话,只要egen group=group(var),就能保证group是连续的了。这点可以解决。

24
sungmoo 发表于 2013-1-29 21:44:03
如果碰到时间不是连续的话,只要egen group=group(var),就能保证group是连续的了。这点可以解决。
(重复一遍废话)是否需要或可以这样操作,还是先取决于既有的问题与设定。

(另外,解决的“这点”指什么?)

25
sungmoo 发表于 2013-1-29 21:56:02
本题如果想按照样本分位数来对样本分组(这里首要的是:研究者必须先说出“样本分位数”的确切定义),可使用cumul(它可以与by联用)。

26
xingxf 发表于 2013-1-29 23:01:53
sungmoo 发表于 2013-1-29 21:56
本题如果想按照样本分位数来对样本分组(这里首要的是:研究者必须先说出“样本分位数”的确切定义),可使 ...
根据你的建议,我编写了如下步骤,这个我感觉更好一些
bys year: cumul(MV), gen (cumMV) equal
gen MV_Deciles=ceil(10*cumMV)
bys year MV_Deciles: cumul(MB), gen (cumMB) equal
gen M2B_Quintiles=ceil(5*cumMB)

27
xsx小虾米 发表于 2013-5-24 14:44:32
第一次使用stata,能把完整的程序再贴一次么,解释我没怎么看明白。哪儿体现出来的按数值大小分组的,初学菜鸟,望不吝赐教~~多谢啦~~

28
xingxf 发表于 2013-5-26 07:01:23
xsx小虾米 发表于 2013-5-24 14:44
第一次使用stata,能把完整的程序再贴一次么,解释我没怎么看明白。哪儿体现出来的按数值大小分组的,初学菜 ...
完整结果已经写在最前面了啊。你是哪里不明白呢?

29
xsx小虾米 发表于 2013-5-26 15:29:48
嗯,我试着分了下 组,但是你的两次都没显示按大小排序  如果一开始在excel排好序  在写进stata里 那第一组分组没问题,但第二组就没按大小排序了,应该用sort排序了再分第二次5组

30
xsx小虾米 发表于 2013-5-26 15:40:27
gen MV_Deciles=1
forvalues i=1/10{
bys Year (MV): replace MV_Decile=`i' if 10*_n/_N<=`i'&10*_n/_N>`i'-1
}
gen MB_Quintiles=1
forvalues i=1/5{
bys Year MV_Deciles (MB): replace MB_Quintiles=`i' if 5*_n/_N<=`i'&5*_n/_N>`i'-1
} 我用的是这个的

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

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