楼主: vincent829
12109 29

命令太长怎么办 [推广有奖]

11
sungmoo 发表于 2009-6-30 16:51:29
vincent829 发表于 2009-6-30 13:01 我只需要一部分作为我的样本
再抽样的原则是什么?

12
蓝色 发表于 2009-6-30 16:56:38
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了啊

13
voodoo 发表于 2009-6-30 16:56:57
vincent829 发表于 2009-6-30 14:16
3# 蓝色
我看了Stata,最多只能有255层的关系,但是我有将近1000个id,也就是要用1000次"或",我已经一个个输入了,命令执行不了
我没有查到关于Stata 255层关系的限制,不知你从哪里查到的?
巫毒上传,必属佳品!
坛友下载,三思后行!

14
voodoo 发表于 2009-6-30 17:07:20
蓝色 发表于 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
巫毒上传,必属佳品!
坛友下载,三思后行!

15
voodoo 发表于 2009-6-30 17:11:23
sungmoo 发表于 2009-6-30 16:51
vincent829 发表于 2009-6-30 13:01 我只需要一部分作为我的样本
再抽样的原则是什么?
对,假如知道“原则”,就可以编个小程序完成keep if ...工作。
巫毒上传,必属佳品!
坛友下载,三思后行!

16
voodoo 发表于 2009-6-30 17:57:28
14楼太麻烦了点,用蓝色的建议:
gen sample = 1 if id == 1| id == 3 | id == 6| id == 8 ...
replace sample = 1 if ......
......
replace sample = 1 if id == 1000 | id == 1003 | id == 1006 ...
keep if sample == 1
drop sample
巫毒上传,必属佳品!
坛友下载,三思后行!

17
vincent829 发表于 2009-6-30 22:54:08
15# voodoo
抽样没有规律,所以id得一个个输入

18
vincent829 发表于 2009-6-30 22:55:11
16# voodoo

谢谢你的解答,我最后用的就是这种方法

19
vincent829 发表于 2009-6-30 23:16:08
voodoo 发表于 2009-6-30 16:56
vincent829 发表于 2009-6-30 14:16
3# 蓝色
我看了Stata,最多只能有255层的关系,但是我有将近1000个id,也就是要用1000次"或",我已经一个个输入了,命令执行不了
我没有查到关于Stata 255层关系的限制,不知你从哪里查到的?
具体的我找不到了,但是可以确定的是stata命令 关系的极限是255

20
sungmoo 发表于 2009-7-1 08:32:31
vincent829 发表于 2009-6-30 22:54 抽样没有规律,所以id得一个个输入
那么,是完全随机再抽样吗?

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

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