其他
Stata中变量观测值的亲密伙伴——levelsof命令
本文作者:陈丹慧,中南财经政法大学金融学院
本文编辑:崔赵雯
技术总编:余术玲
爬虫俱乐部云端课程
导读
前段时间我们爬虫俱乐部的Stata学员群有学员问了这样的一个问题:use wiod1.dta,clear
keep if strpos(Description,"FINANCIAL INTERMEDIATION") //保留符合条件的观测值
执行以上操作后,观察数据集,我们会发现这个数据比较规整,每个国家都占两行,直接看最后一行,行数除以2,就知道有多少个国家符合条件。levelsof Country
levelsof命令的含义为"Distinct levels of a variable"。它对指定变量的不同取值进行排序。执行上行命令在结果窗口就会显示Country变量的不同取值,相当于进行了一次去重:r(N)
储存指定变量的总观测值数,以r(r)
储存指定变量不同观测值的个数,以r(levels)
储存指定变量不同取值。return list
所以,根据标量r(r)的值我们就知道有多少个不同的国家了。1.基本语法与选项
levelsof的基本语法为:levelsof varname [if] [in] [, options]
它的选项如下表所示:选项 | 功能 |
---|---|
clean | 清除字符串变量取值结果的复合双引号 |
local(macname) | 将排序后的取值结果放在一个宏中 |
missing | 将缺失值纳入取值中 |
separate(separator) | 设置取值结果的分隔符 |
matcell(matname) | 以矩阵的形式储存不同取值的频数 |
matrow(matname) | 以矩阵的形式储存数值型变量的不同取值 |
hexadecimal | 使用16进位制展示数值型变量 |
levelsof Country in 1/10,clean separate(;) local(country) matcell(freq)
display "`country'"
matrix list freq
此时观察结果展示窗口可以发现:Country变量前十行观测值不同取值的复合双引号不显示,且不同取值以分号隔开;local()选项生成了一个存储不同取值的局部宏;matcell()选项生成了一个矩阵来存储不同取值的频数。clear
set obs 5
gen x=_n
gen y=ln(x)
levelsof y, matrow(A) hexadecimal
matrix list A
如下所示,此时变量y的不同取值以16进位制展示,确保了数据的准确度。另外,在这里我们用了matrow()选项将不同取值储存在矩阵A中,矩阵A中的值仍是十进位制。2.案例介绍
levelsof命令最主要的用途是调用变量的观测值来实现某种目的。下面我们介绍一个词云图绘制的案例。在绘制词云图时,去除无意义的停用词是很重要的一步。停用词表和分词结果是不同的两个数据集。这意味着我们要调用停用词表中的停用词,将它与分词结果中的每一个词进行匹配,去除分词结果中的停用词。首先,导入分词结果。clear
infix strL v 1-12000 using 分词结果.txt, clear
rename v word
然后,使用起死回生命令“preserve ,restore”。这意味着,在preserve 后我们可以肆无忌惮的折腾数据,只要restore一下,原数据就会重现。我们读入停用词表,利用levelsof将停用词表中的停用词放在宏中,然后再重现原数据,调用存放停用词的宏。preserve
import delimited using 停用词表.txt, clear encoding("utf-8")
levelsof v1, local(keyword) //将停用词放在局部宏keyword中
restore
*删除分词结果中的停用词
foreach word in `keyword' {
drop if word == "`word'"
}
注意:levelsof的local()选项定义的是一个局部宏,上述命令必须同时执行。最后,在安装了wordcloud这个命令的基础下,绘制词云图。bysort word: gen frequency = _N
duplicates drop
gsort -frequency
wordcloud word frequency using 词云.html, replace size(15 80) range(3840 2160)
shellout 词云.html
爬虫俱乐部开发的命令更新及常见问题说明
Seminar | 道德培训真的有用吗?
统计年鉴数据整理小技巧
Seminar | 作为飞行员,我比别的CEO多了什么?
利用TensorFlow构建前馈神经网络
推文合集(1)| Stata学习者必看的n篇推文!
Seminar | 诚信的价值
利用tushare获取股票数据及实现可视化
从Excel到Stata的“摆渡车”——import excel命令
光阴十载,见证了《经济研究》中的“高被引”
利用tushare获取股票数据
这些年,经管类C刊都在研究什么?
Seminar | 眼见为实吗?高管面部可信度、审计师任期与审计费用
Seminar | 恐怖袭击与CEO薪酬
代码补全,主题更换,Jupyter Notebook原来可以这样用?
【爬虫实战】“双十一”微博热搜实时跟进
Stata中的数值型变量分类神器--recode
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。