查看原文
其他

爬虫俱乐部的精彩答疑--花式重命名变量

爬虫俱乐部 Stata and Python数据分析 2023-01-01

本文作者:邱   沣,河南大学中原发展研究院

本文编辑:陈志林

技术总编:李婷婷


Stata&Python云端课程来啦!  

好消息好消息,爬虫俱乐部开辟小鹅通战场!!爬虫俱乐部隆重推出小鹅通网络课程,将Stata基础课程Stata进阶课程Python课程都上传至小鹅通平台,欢迎大家多多支持订阅!报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台留言哦。如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~

   


01
ENTER引言


继上次山东财经大学暑期Stata网课上的精彩答疑之后,大家学习热情日益高涨,精彩提问层出不穷,面对大家的踊跃提问,我们爬虫俱乐部将继续为大家提供强大、负责、高效和细致入微的答疑服务。
  此外,值得庆祝的是我们的课程答疑群已经形成了良好的社区交流环境,我们爬虫俱乐部搭建出了一个供大家交流和学习的社区,在这里,遇到问题,无论是答疑人员,还是任何人,都可以提问,交流和回答。我们就是要营造一个友好交流的空间,打造人人创造,人人共享的优秀网课平台。

接下来仍然是精彩的答疑案例分享,供大家学习和参考



02
ENTER答疑案例分享



这位学员的问题是重命名上图所示这些变量,只保留下划线 _ 后面的英文,通过仔细观察我们可以发现是有规律可循的,可以使用下划线 _ 作为分隔符,将中文和英文分开,从而保留我们想要的变量名。
  我们爬虫俱乐部的李教授就提供了这一思路,使用字符串函数巧妙地解决了这一问题。


李老师作为团队的资深Stata专家,技术大牛,经常在群里和学员互动,解答问题,所写代码让大家争相点赞模仿,我们这里也学习一下老师的代码:
clear all set obs 1 gen 变量1_x1 =.gen 变量2_x2 =.gen 变量3_x3 =.
foreach v in 变量1_x1 变量2_x2 变量3_x3 { local new_v = substr("`v'",index("`v'","_")+1,.) rename `v' `new_v'}

首先根据问题样式生成了类似的变量名,接着使用foreach循环批量修改变量名,其中使用字符串函数index("v'","_")为返回下划线 _ 在local v 中的位置,substr("`v'",index("`v'","_")+1,.)即为提取字符串 local v 中下划线 _ 出现的下一个位置处到结尾处的子字符串即x1 x2 x3,最后重命名变量。

老师解答了问题之后,群里更是在此基础上展开了进一步讨论,大家纷纷提出了新的解法,实现了一题多解,大家一起创造。


比如这位学员使用命令 gettoken 切割字符,并搭配使用字符串函数usubinstr将下划线 _ 替换为空从而删掉下划线,来实现重命名变量:
dsforeach varlist of varlist `r(varlist)' { gettoken s1 s2: varlist, parse("_") local s2 = usubinstr("`s2'","_","",1) rename `varlist' `s2'}关于更多的字符串函数的使用,可参考我们团队之前的推文《字符串函数总动员》接下来我们团队的优秀团员闫宇聪博士更是使用正则表达式ustrregexrf直接替换掉了下划线及下划线前的内容,其中"[\u4e00-\u9fa5]+"指的是匹配1次或多次中文字符,".*" 则会匹配到有些变量前的英文字符,使得整体程序更加严谨完整,从而实现了变量的重命名:
foreach i of varlist 变量1_x1-变量4_x4{ local k=ustrregexrf("`i'","[\u4e00-\u9fa5]+._","",1) rename `i' `k' } 以上就是本次分享的精彩答疑案例了,希望我们挑选出的案例对大家有所启发和帮助。


最后,欢迎大家报名参与我们的课程学习,爬虫俱乐部将为您提供的零基础、无障碍的Stata数据分析和网络爬虫课程,更重要的是,讲得好不如答疑答的好! 我们高效、强大、负责的答疑团队,将为您提供认真负责,细致入微的答疑服务。在这里,您的学习效率和效果将成倍提升,一站式购买,无后顾之忧。






END


最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。


  


对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!





往期推文推荐      今天你还是“刘畊宏女孩”吗?

爬虫俱乐部在山东财经大学金融学院暑期Stata网课上的精彩答疑

JupyterNotebook——如何更换默认文档目录

Stata绘图系列——玩转绘图通用选项(一)

出人意料!这所大学的A级学科总数竟超越清华北大!

Stata数据读入——打开方式不同?

数据类型——Dict、Set与Frozenset简析

Stata小贴士之外部命令安装路径

有一种夏天叫做宫崎骏的夏天

换装术|多个Excel文件如何一键转为dta格式

【基础篇】Python可变对象与不可变对象

Stata绘图系列——细节掌控绘图区域!

 4月A股的收官战之概念板块哪家强?

解放双手!你必须要会的两个命令—inlist & inlist2

【基础篇】字符串之判断方法

Stata绘图系列——让你的直方图随心所欲

【爬虫篇】湖人无缘季后赛,球迷如何回应

客官,要来份四象限图吗?

Python实现简繁体转换

Stata与Python交互方法及数据传递

关于我们 


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

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



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

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。




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

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