判断全部空格_条件判断的两种简便方法

本文作者:张   宇

文字编辑:杨长青

技术总编:司海涛

好消息!!!爬虫俱乐部将于2019年7月5日至7月8日在武汉举行首期Python编程技术定制培训。本次培训采用理论与案例相结合的方式,旨在帮助零基础学员轻松入门Python,由浅入深学习和掌握Python爬虫技术,并明确未来更进一步的学习方向。

详细培训大纲及报名方式,请点击文末阅读原文呦~

在数据处理的过程中,我们经常用到条件判断语句。以auto数据为例:

clear sysuse auto tab mpg

61d2d49999359127c3ee2c902dbd9797.png

要保留mpg为12,15,20,26,34,41的值,通常我们会通过下面一行程序实现:

keep if mpg == 12 | mpg == 15 | mpg == 20 | mpg == 26 | mpg == 34 | mpg == 41

此时有62个观测值被删除。

7314b52d837715961cc1364b9034fe3a.png

可以发现,这样一行程序非常繁琐,那么,还有别的方法可以实现这样的条件判断吗?

一、ifin命令

这个命令是外部命令,需要使用ssc install ifin进行安装。

ifin的基本语法如下:

ifin values, variable(varlist) [and] [omitif]


此命令可以生成一个用来选择多个值的if条件语句,并且将结果保存在局部宏s(ifin)中。主要选项如下:

【1】values代表要进行判断的目标值,在上面的例子中12到41这几个数字就是我们用到的values,目标值之间要用空格隔开。

【2】variable(varlist):此选项指定进行判断的变量。

【3】quote:将目标值加上双引号。

依据上述介绍,我们可以利用ifin生成一条判断语句,例如:

sysuse auto, clear ifin 12 15 20 26 34 41, variable(mpg)di "`s(ifin)'"  //将结果作为字符串打印出来。keep `s(ifin)'

结果如下:

9980c6e9e400f9add49255d0a2cfe620.png

局部宏s(ifin)中就存在这样一条if判断语句

1ec846c142522ada7d310c013e0ae7d2.png

同样有62条观测值被删除了。可以发现,ifin命令生成一条if语句,并将这条语句存储在局部宏s(ifin)中,使程序变得简洁。

如果我们要处理的变量是字符型变量,可以使用quote选项达到目的,例如:

sysuse auto, clear tostring mpg , replace   //为了演示,将数值型变量转成字符型。ifin 12 15 20 26 34 41, variable(mpg) quote di `"`s(ifin)'"'keep `s(ifin)'

3ebba2542251a0655d7bf7dd1161196e.png

quote选项将目标值全部加上了双引号,方便我们对字符型变量进行处理。

二、inlist()函数

此函数的基本形式为:inlist(z,a,b,...)。如果第一个参数z出现在后边任意一个参数中,返回的值为1;否则返回的值为0。例如:

416ba2f398b7711e0d6feabd16e5fe7a.png

可以看到,第一个参数1没有出现在后边的参数中,返回0;1出现在了后边的参数中,返回1。

因此,我们同样可以利用此函数进行条件判断。将inlist()函数第一个参数传入变量名,后边的参数都是这个变量中的值。例如:

sysuse auto , clear keep if inlist(mpg,12,15,20,26,34,41) 

这一行程序意味着保留那些mpg等于12、15、…41的观测值。使用inlist()函数可以得到同样的结果:

7dc7211f93ea3540fdbc9301ce1ecb02.png

以上就是简化判断语句的两种方法,希望对大家有所帮助。

对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!

往期推文推荐

  • Python编程技术暑期训练营报名啦!

    爬虫俱乐部推出新命令:cnar--年报数据快到碗里来

  • 中国大学获美数学建模竞赛奖项数量排行榜

  • Stata编程技术五一训练营火热报名中!

    Pandas之数据查询与修改

  • 爬虫俱乐部新命令——cntraveltime帮您计算两地之间旅行时间

  • 用python提取pdf表格数据

    单行观测值过长?filefilter帮你自动分行

  • 你究竟有多少NB好校友?

  • 筛选文件利器——filesearch命令

  • 绘制《倚天屠龙记》地名词云图

  • Python标准库-logging模块(1)

  • 爬虫俱乐部新云端数据源启用

关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:1)必须原创,禁止抄袭;2)必须准确,详细,有例子,有截图;注意事项:1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。2)邮件请注明投稿,邮件名称为“投稿+推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

0df22e2f60654dccf629f401df597e57.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值