蓝色 发表于 2009-6-30 16:56 
voodoo 发表于 2009-6-30 16:43 
eblog 发表于 2009-6-30 14:52 
vincent829 发表于 2009-6-30 14:19 
2# eblog
我看了命令的解释,arguments最多255。能否详解一下?谢谢
分成几个命令写不就结了
我help limits,发现# characters in a command在Stata SE 10.1 中可长达1,081,527,所以我想应该不是命令太长的问题,而可能是由 # of dyadic operators in an expression(max 800 for SE) 或 # of numeric literals in an expression(max 300 for SE)导致。
既然命令已经写好了,那就将原命令分成若干段,多用几次keep if ... 不就得了。
keep if id == 1| id == 3 | id == 6| id == 8 ...
...
keep if id == 1000 | id == 1003 | id == 1006 ...
第一个keep的时候,其余的已经drop掉了,就不会有你的剩下的keep了啊
谢谢蓝色提醒,一时糊涂,把keep当drop啦。那就试试变通方法,先keep部分样本,然后在用append:
// 应该keep四次就足够了,不够就编个forv循环,方便一点。
preserve
keep if id == 1| id == 3 | id == 6| id == 8 ...
save 1
...
restore, preserve
keep if id == 1000 | id == 1003 | id == 1006 ...
save 4
use 1, clear
append using 2
append using 3
append using 4
save last
erase 1
erase 2
erase 3
erase 4