楼主: vincent829
10974 28

[数据管理求助] cut()不能和by一起用,怎么办? [推广有奖]

11
sungmoo 发表于 2009-7-5 12:02:34
voodoo 发表于 2009-7-5 11:55 viewsource cumul.ado 发现:by year: cumul mv, g(group) 就等于by year: gen group = _n/_N。当然cumul命令可增加很多options,功能更加强大。
这里还有一个细节:使用cumul x,可以事先不对x排序。

12
voodoo 发表于 2009-7-5 12:06:06
*个人以为,如采用上述命令,也可使用(省去egen过程):
sort year mv
by year: g gr=_n/_N
replace gr=int(gr*10)+1
recode gr (11=10)我也想到了这一点了,但个人认为用egen可免去忘记recode这一不直观的步骤(相信很多人不用br是想不到)。
比如我们不用int()而是用了ceil(),此时该如何recode呢?
replace gr=ceil(gr*10)+1
又比如是用了replace gr=floor(gr*10)+1呢?
巫毒上传,必属佳品!
坛友下载,三思后行!

13
sungmoo 发表于 2009-7-5 12:09:51
voodoo 发表于 2009-7-5 12:06我也想到了这一点了,但个人认为用egen可免去忘记recode这一不直观的步骤(相信很多人不用br是想不到)。
这只是涉及对“末位值”的处理吧。

你不用recode只用replace也可以实现这个过程。

另外,egen过程更耗时吧?

14
voodoo 发表于 2009-7-5 12:09:54
sungmoo 发表于 2009-7-5 12:02
voodoo 发表于 2009-7-5 11:55 viewsource cumul.ado 发现:by year: cumul mv, g(group) 就等于by year: gen group = _n/_N。当然cumul命令可增加很多options,功能更加强大。
这里还有一个细节:使用cumul x,可以事先不对x排序。
命令cumul x在执行时帮你sort了,所以也不能减少耗时。
巫毒上传,必属佳品!
坛友下载,三思后行!

15
voodoo 发表于 2009-7-5 12:11:44
确实,往往我们要寻求的是程序直观可读性和执行效率之间的权衡。当然也有例外:帖子http://www.pinggu.org/bbs/thread-451864-1-1.html中sungmoo所提出的方法就比“变连乘为连加”的方法要好。
巫毒上传,必属佳品!
坛友下载,三思后行!

16
sungmoo 发表于 2009-7-5 12:14:27
voodoo 发表于 2009-7-5 12:09 命令cumul x在执行时帮你sort了,所以也不能减少耗时。
这里就涉及一个问题了:你用stata既有命令组(自编程序)实现某一任务,与stata命令自己(stata内在程序)实现该任务,哪个更省时?

cumul x完成后,可以不改变数据原先排列的顺序吧。

17
sungmoo 发表于 2009-7-5 12:16:26
voodoo 发表于 2009-7-5 12:11 确实,往往我们要寻求的是程序直观可读性和执行效率之间的权衡。
这里又涉及一个问题:与执行时间相比,“可读性”可能是一个相对的概念,或者说,是因人而异的。

18
voodoo 发表于 2009-7-5 12:26:49
sungmoo 发表于 2009-7-5 12:14
这里就涉及一个问题了:你用stata既有命令组(自编程序)实现某一任务,与stata命令自己(stata内在程序)实现该任务,哪个更省时?
个人认为假如cumul 也是.do或.ado文件的话(正是.ado文件),同一语句cumul的执行时间应该和我们.do命令的执行时间是一样——除非是Stata的build_in command,如summarize。
巫毒上传,必属佳品!
坛友下载,三思后行!

19
voodoo 发表于 2009-7-5 12:31:09
sungmoo 发表于 2009-7-5 12:16
这里又涉及一个问题:与执行时间相比,“可读性”可能是一个相对的概念,或者说,是因人而异的。
可读性确实因人而异,但关键是“普通的”Stata学习者如何理解你程序的可读性——这应该是个客观标准。
巫毒上传,必属佳品!
坛友下载,三思后行!

20
sungmoo 发表于 2009-7-5 12:36:57
voodoo 发表于 2009-7-5 12:31 可读性确实因人而异,但关键是“普通的”Stata学习者如何理解你程序的可读性——这应该是个客观标准。
那么,一个命令,有多“普通”,才可以由“普通的”学习者理解呢?学习者有多“普通”,才算“普通”呢?

这有客观标准吗?

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

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