根据你提供的截图:
1. pctile这一行没问题
2.return list这一行也没有问题
3. egen这一行也没有问题,能够顺利调用return list种的值
4. drop ra这一行命令有问题,因为你上面执行了egen命令,return list中的输出结果因为egen的执行已经发生了彻头彻尾的变化,所以drop这一行命令已经无法识别什么r(r9)是什么东西
最后,还是告诉大家,return list中的值都是临时性的,你根本无法判断它什么时候会发生变化,所以,切忌,千万不要直接去调用return list的值,最好的方法是你直接把需要调用的return list中的值直接写在纸上,需要用到的时候直接输入你记下来的值。
接下来我再举一个平常大家都会遇到的问题,这个问题有时候你根本发现不了:
我们在进行截尾处理时,经常会用到:
_pctile a, percentile(1 99) //计算出变量a的第1百分位值和第99百分位值,即2%水平上截尾处理,stata界面不显示结果,而是存在return list
return list //查看上述命令的结果
drop if a<r(r1) //这个命令没问题,因为它直接承接着上面的return list ,关键是执行完这个命令,return list 已经发生了彻底的变化
如果你继续用
drop if a>r(r2)
那么不好意思了,这就错了,因为你执行完drop if a<r(r1),return list已经发生变化了,这时候会遇到两种结果,一是命令报错,另一种是它不报错并直接执行下去,但是drop掉的并不是你想要的结果,这个错误很隐蔽,你发现不了的话意味着截尾过程出错了。
所以,最好的方式就是return list完,把需要的数据记在纸上,drop过程中直接输入对应的数字,而不是采用r(r1) r(r2)直接调用。



雷达卡
京公网安备 11010802022788号







