split和nsplit助你轻松拆分
本文作者:宁刘莹
文字编辑:李婷婷
技术总编:张计宝
Python暑期线上课程火热招生中~
爬虫俱乐部将于2020年7月25日至28日在线上举行Python编程技术训练营,本次培训采用理论与案例相结合的方式,帮助大家在掌握Python基本思想的基础上,学习科学计算技术与网络数据抓取技术,详情可点击《Python云端培训课程开始报名~》,或点击文末阅读原文直接提交报名信息呦~
导读
在使用stata处理数据的过程中,我们经常会遇到需要将变量按照不同的要求拆分成若干个变量的情况,如果是有着明显的拆分标志字符串,通常使用split比较多,但如果是没有拆分特征的数字变量呢?这时候nsplit就可以派上用场。下面小编就带大家看看二者的不同使用方法。
spilt命令用于拆分字符串变量,其语法如下:
split strvar [if] [in] [, options]
split的选项包括:
generate()选项用来为拆分的变量们命名;
parse()选项用来指定以什么字符作为拆分的标志,默认为空格;
limit(#)用来指定拆分出来的新变量个数的最大值;
notrim()用以指定不删减原始变量字符串中前缀或末尾的空格;
destring选项规定对拆出来的新变量,尽量用数值型变量替换初始字符型变量;
ignore("chars")选项用于删掉指定的非数字字符;
force对于存在非数字的变量,采取强制destring,会将非数字的变量转换为缺失值;
float选项指定数值型变量的类型为浮点型;
percent选项用于将百分比形式的数字转换成分数。
举个简单的例子,我们拿auto数据来说,我们发现数据中的汽车制造厂商名称大部分都是由两个或者三个单词构成,如果想要拆分开的话,就可以使用split。
clear all
sysuse auto
split make, gen(name) parse(" ")
list make name* in 1/5
这里我们用parse选项指定了拆分符号,如果不加这个选项,结果是一样的,因为默认分隔符就是空格,拆分后结果如下:
二、 nsplit
nsplit [varname] [if exp] [in range] , digits(digit pattern in existing variable) [generate(newvarlist or stub) ]
首先,digits选项是一个必选项,用于规定拆分的模式,如将七位数拆分为2、2、3,则需要写成digits(2 2 3);如果需要拆分的位数相同,如需将六位数拆分为三个两位数,则只需写成digits(2)即可;
generate()选项用于生成新变量的变量名。
clear all
input code str20
130102 //河北省石家庄市长安区
130103 //河北省石家庄市桥东区
130203 //河北省唐山市路北区
140106 //山西省太原市迎泽区
220203 //吉林省吉林市龙潭区
331082 //浙江省台州市临海市
371521 //山东省聊城市阳谷县
410105 //河南省郑州市金水区
420111 //湖北省武汉市洪山区
end
nsplit code, digits(2) gen(a)
rename a* (provincecode citycode countycode)
gen province = "河北省" if provincecode == 13
replace province = "山西省" if provincecode == 14
replace province = "吉林省" if provincecode == 22
replace province = "吉林省" if provincecode == 22
replace province = "浙江省" if provincecode == 33
replace province = "山东省" if provincecode == 37
replace province = "河南省" if provincecode == 41
replace province = "湖北省" if provincecode == 42
PDF文本信息提取(二)
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。