查看原文
其他

Ftools命令组之flevelsof命令介绍

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:周宏杰

文字编辑:张馨月

技术总编:张计宝

导读

在往期推文《Ftools命令组之fisid命令和fsort命令介绍》《Ftools命令组之fegen命令介绍》中,我们已经详细介绍了ftools的封装命令——fisid命令、fsort命令和fegen命令,本文中将继续介绍ftools的封装命令系列之一的flevelsof命令。

flevelsof命令

语法:flevelsof varname [if] [in] [,options]

flevelsof用来在大数据集中代替levelsof,主要作用有两个:第一,展示指定变量不同值;第二,当需要使用foreach循环时,可以使用该命令提取不同值作为循环范围。

为了展示flevelsof命令的效果,需要先生成一个大数据集。本文使用Stata自带数据集nlsw88.dta,重复生成该数据集50次之后,将这些数据纵向拼接起来得到一个大数据集tmp.dta,具体代码如下所示:

clearforv i=1/50{ sysuse nlsw88,clear save `i',replace}use 1,clearforv i=2/50{ append using `i'}save "tmp",replace
(1)flevelsof命令效果展示

接下来对tmp数据集中的industry变量使用flevelso命令,具体命令如下所示:

use tmp,clearflevelsof industrycodebook industry

具体效果如下所示:

根据codebook结果中的unique values看出industry变量中有12不同的值,而flevelsof命令也提取出12个值,但是提取的却是12个整数,这并不是我们所希望的,我们希望提取出原本的字符内容。

首先,查看industry命令的类型,发现是标签数值类型,这也就说明了提取的结果是数值的原因,因为该变量中数字才是原本的值,而字符串是标签。因此,需要先将标签数值变量转成字符串变量,然后再使用flevelsof命令,具体命令如下所示:

decode industry, generate(industry1) //将标签数值变量industry转成字符串,生成变量industry1flevelsof industry1

结果如下所示:

从上图中看出,提取出了我们希望得到的内容。

(2)flevelsof命令和levelsof命令运行速度对比

接下来对比levelsof命令查找指定变量中不同值的速度,展示flevelsof命令的运行速度,为了使对比结果有更好的可信度,这里对tmp.dta数据集中的industry1变量运行levelsof命令和flevelsof命令各五次,然后对所耗时间取均值。具体命令如下所示:

*使用flevelsof命令scalar sum=0 //生成一个标量来存储5次运行程序所耗费的总共时间forv i = 1/5{ use tmp,clear decode industry, generate(industry1) timer clear 1 timer on 1 flevelsof age timer off 1 timer list 1 scalar sum=sum+r(t1)}scalar avg=sum/5 //运行时间均值di "使用flevelsof命令耗费的时间为",avg*使用levelsof命令scalar sum=0 forv i = 1/5{ use tmp,clear decode industry, generate(industry1) timer clear 1 timer on 1 levelsof industry1 timer off 1 timer list 1 scalar sum=sum+r(t1)}scalar avg=sum/5 di "使用levelsof命令耗费的时间为",avg

具体结果如下图所示:

从上图可以看出,flevelsof命令的运行速度快于levelsof命令,但是由于数据量不大,所以差距并不明显。

(3)展示clean选项的效果

该选项的效果主要是在展示字符串值时不带着双引号。在判断语句中需要判断前后是否一致的时候,有时字符内容是相同的,但是由于带着双引号,会被系统判断条件为假,此时需要使用该选项。具体命令如下所示:

use tmp,cleardecode industry, generate(industry1)flevelsof industry1flevelsof industry1,clean

具体结果如下所示:

如上图所示,使用clean选项去掉了结果的双引号。

(4)展示missing选项的效果

默认情况下,flevelsof命令查找指定变量中不同值时不包含缺失值,但是使用了missing选项之后,会连缺失值一起找出来。具体命令如下所示:

use tmp,cleardecode industry, generate(industry1)flevelsof industry1flevelsof industry1,missing

具体结果如下所示:

如上图所示,带着missing选项的flevelsof命令比不带着missing选项的flevelsof命令多展示出了一个空字符串。

(5)展示separate选项的效果

默认情况下展示flevelsof命令查找指定变量中不同值的结果时,不同值之间用空格隔开。使用了separate选项之后,可以选择指定的分隔符对结果进行分隔。具体命令如下所示:

use tmp,cleardecode industry, generate(industry1)flevelsof industry1flevelsof industry1,separate(.)flevelsof industry1,separate(,)

具体结果如下所示:

从上图看出,使用不同分隔符,最后的展示效果不同。

至此,本文已经介绍完了flevelsof命令,相信大家对于它的用途有了一定的认识,赶快行动起来更新以前的命令吧!后续还会推出ftools系列命令,大家敬请期待。







对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
疫情下的家庭关系|《请回答1988》影评爬取
教你把Python当美图秀秀用(二)
自己动手进行线性回归计算
personage与年龄
原来这才是查看盲评结果的正确方式
教你把Python当美图秀秀用(一)
用数据透视表剖析泰坦尼克号乘客数据
读入文本文档,intext来帮忙
matchit——解锁文本相似度的钥匙
基于广义线性模型的机器学习算法——线性回归
听说你会魔法?
dummieslab——从分类变量到虚拟变量的“一步之遥”
线上Python课程都面向哪些方向?
子类与父类
用requests库爬取淘宝数据
WordStat—Stata的文本分析小助手
数据筛选理还乱,datacheck能诊断

如何用简单的手法绘制出不一样的海外疫情趋势图

关于我们


微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

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


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存