楼主: vincent829
10408 54

[其他] 如何定位是在哪个group [推广有奖]

31
voodoo 发表于 2009-7-6 20:39:07
vincent829 发表于 2009-7-6 20:05
sungmoo 发表于 2009-7-6 18:21
*这两个命令是有区别的
by id: g s=sum(mv)
by id: egen n=sum(mv)
我查了help,egen里面没有sum这个function,只有total吧?
Stata 9.0用egen sum;后改成egen total
viewsource _gsum.ado
巫毒上传,必属佳品!
坛友下载,三思后行!

32
voodoo 发表于 2009-7-6 20:44:35
vincent829 发表于 2009-7-6 17:44
26# sungmoo

成功了,缺失值的替代终于可以完成,衷心谢谢sungmoo
一个基于sungmoo的简单又管用的“替换缺失值”的方法:

use sheet1,clear
*替换缺失值
sort id year month
forv i=1/12 { // 因为至多替换1年即12个月的缺失数据
      by id: replace mv = mv[_n+1] if mv == . & mv[_n+1] < .
}
drop id if mv == .
巫毒上传,必属佳品!
坛友下载,三思后行!

33
vincent829 发表于 2009-7-6 21:08:03
32# voodoo

现在剩下分组的问题,如果知道了MV, 然后也知道benchmark的MV和分组情况,用什么命令可以定位这个MV在哪个group里呢?

34
sungmoo 发表于 2009-7-6 22:10:06
vincent829 发表于 2009-7-6 20:05 我查了help,egen里面没有sum这个function,只有total吧?
你可以试一下,看看你的stata版本可否运行egen x=sum()

35
sungmoo 发表于 2009-7-6 22:26:55
voodoo 发表于 2009-7-6 20:44 一个基于sungmoo的简单又管用的“替换缺失值”的方法:

use sheet1,clear
*替换缺失值
sort id year month
loc n=_N
forv i=1/12 { // 因为至多替换1年即12个月的缺失数据
      by id: replace mv = mv[_n+1] if mv == . & mv[_n+1] < .
}
drop id if mv == .
这个未必吧?

若某公司连续两年24月里mv都缺失,却有后续年的数据。你的命令是不能实现替换的。

当然,这要看楼主的要求了。

36
sungmoo 发表于 2009-7-6 22:28:21
vincent829 发表于 2009-7-6 21:08 现在剩下分组的问题,如果知道了MV, 然后也知道benchmark的MV和分组情况,用什么命令可以定位这个MV在哪个group里呢?
现在楼主需要说明:你的sheet2里共要涉及哪些年份。

37
voodoo 发表于 2009-7-6 23:48:51
sungmoo 发表于 2009-7-6 22:10
vincent829 发表于 2009-7-6 20:05 我查了help,egen里面没有sum这个function,只有total吧?
你可以试一下,看看你的stata版本可否运行egen x=sum()
egen sum()在Stata 10.1 SE中仍然可用,但由于容易和求running sum的sum()函数产生混淆,所以更名为egen total(),在help egen和手册中也不再对egen sum()进行说明。
巫毒上传,必属佳品!
坛友下载,三思后行!

38
vincent829 发表于 2009-7-7 09:30:31
36# sungmoo

涉及从1981到2007年,文件我发给你了

39
vincent829 发表于 2009-7-7 11:31:50
我用了比较低级的命令解决分组的问题。
sort year mv id month group
by year (mv): replace gr=group[_n+1] if id!=.&gr==.
by year (mv): replace gr=gr[_n+1] if id!=.&gr==.
第3条命令要实行好多遍,直到没有变换值为止。怎么循环我还没想到。

40
sungmoo 发表于 2009-7-7 14:32:37
vincent829 发表于 2009-7-7 09:30 涉及从1981到2007年,文件我发给你了
(sheet1指sample,sheet2指benchmark)

有一个问题:

sheet2中,比如1981年,mv=1的公司的group号可能是1、2、3,对于这样的mv,要选择哪个group号?

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-5 12:55