【STATA】批量定义变量的缺失值 foreach

0. 缘起

刚开始接触stata,用来做问卷结果的处理工作。但是某些问卷软件在针对缺失的空(也包括某些数据库中下载的数据)通常采用一些特定的数如-3或者-8作为缺失值,但是stata并不够聪明,不能识别其为缺失值(当时一直感叹,SPSS都能实现的功能堂堂stata居然不能)。

后来发现可以使用replace命令进行变量替换,但是苦于变量太多,一个一个写代码过于麻烦(最重要的是非常的丑!!)感觉非常的鸡肋。这个问题困扰我苦久,终于在某个机缘巧合之下知道了正确的处理方法。

顺便说一句,上篇文章中提到的针对所有的国家跑ARIMA模型,并输出结果也是用这种方法实现。其实会了过后知道就是简单的循环语句,但是原来不会的时候,就感觉非常的麻烦。

1. 实现代码

好了,不多bb,直接上代码吧!

代码非常的简短,分为两步

  1. 对所有的变量循环_all
  2. 将小于0的数替换为缺失值
foreach v of varlist _all{ 				//针对所有变量
		replace `v' = . if `v' < 0 		//将负数替换为缺失值
}

这里的v相当于正常循环中的i,不过在表示变量的时候需要用“ `’ ”将其给框起来。

可以根据具体的情况设计逻辑语句,只需替换if后边的逻辑语句即可

再加一些碎碎念,是针对于某些变量设置缺失值,而不是针对所有变量。具体的代码如下:

local vars " daily dress" //选择需要循环的变量
foreach v of local vars{
		replace `v' = . if `v' < 0 		//将负数替换为缺失值
}

和上述的思路基本上是一样的,唯一的区别就是定义了一个变量名的变量(暂元)vars,然后对vars中的所有的东西进行循环。

2. 一些碎碎念

自从知道了这个之后,才感觉stata刚刚入了门,因为如果不会循环的话,用stata做数据处理简直就是一种非人的折磨。甚至一度我都是先把数据导入matlab进行处理,再导出,最后再导入stata进行分析。现在虽然在某些方面还是很难受(不过主要还是因为会的太少了)不过相比最开始的时候感觉好多了。

其实感觉最近收获还是蛮大的,连着好久都没有发文了,主要的原因是因为最近事情有点多,没有时间整理学到的东西然后码字。好几次想写点什么,后来都咕了,今天是突然有感草草的写了一点东西,等忙完过后再做分享叭。

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值