全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1710 2
2021-06-22
我的代码是这样的:
forvalues t = 1/100 {
keep if Country == Country[`t'] & Country_Twin_n == Country_Twin_n[`t']
drop if Benchmark == Benchmark[`t'] & Pair_n != Pair_n[`t']

………………
}
然而当执行了第一个keep命令的时候,因为有observations被删减了,所以该循环关注的那个observation的行数很可能就不再是`t'了,这样就难以达到我想要的目的

请问大神们,有没有可能让这个keep和drop同时进行呢?

还有,我也可以不用行数来定位。在我的原始dataset里面,有一个变量是Number,就是和行数相对应的,第n行的Number的取值就是n。也就是说假如先drop掉了一些observations的话,Number会大于当前的行数,假如该观测值之前有被drop掉的。
drop和keep可不可以有更复杂点的条件呢?比如 drop if 某个variable的取值大于(或等于,或小于)Number取值为k的那条记录的对应的variable取值?
举个例子,比如有两个variable:Number和Price。可不可以keep或drop价格高于4号观测值的所有观测值?

希望我把问题表述清楚了,提前感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2021-6-22 13:49:13
那先根据这些条件生成indicator吧,比如keep中的条件下 生成一个指示变量;然后再根据drop中的条件生成新的指示变量 最后对指示变量进行操作
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-6-22 20:21:41
wdlbcj 发表于 2021-6-22 13:49
那先根据这些条件生成indicator吧,比如keep中的条件下 生成一个指示变量;然后再根据drop中的条件生成新的 ...
嗯嗯谢谢,我后来解决了,我就先把想要针对的observation的相关变量的值设置成了暂元,这个就不会受到行数改变的影响了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群