朝花夕拾 | 识得庐山真面目—unicode命令

2017-03-08 爬虫俱乐部 爬虫俱乐部 爬虫俱乐部


       昨天本公众号推出了本学期的第一个重磅炸弹:

中国高校财经、管理与综合类期刊灌水排行榜

     该文反响热烈,点击量一路攀升已经突破10000次。但是说心里话,这里面的信息含量太大,很多人都还没有看明白。

     其一:技术问题如何解决?如何收集这么大体量的数据?Stata能搞定吗?

     其二为嘛有些大学论文数量很多但是平均引用次数很低呢?数据有没有错?有些不太有名的大学论文数量也不多,但是引用次数却很多呢?

     其三这个推文到底揭露了什么?有没有更多的猛料呢?

     大家先期待着吧,我们转入今天的正题,比较轻松也比较实用,就是朝花夕拾。。。。。



文章来源:数据处理援助中心公众号

  已获得授权


我们在使用stata的过程中,会经常遇到乱码的现象。例如,新浪财经高管任职动态的网页编码是gb2312,导入到stata14后需要提取的信息会出现乱码,姓名和职务都变成了方块,源代码变成了这样的情况:

这样该怎么用stata14进行处理呢。这主要用到了一个命令——unicode。

由于Stata13和Stata14采用了不同的编码,因此Stata13的文件导入到Stata14中就会出现乱码。例如,我们用Stata13写一段简单的程序,在D盘中新建一个名为爬虫俱乐部的文件夹,并且设置其为工作路径:

clear

cap mkdir "D:/爬虫俱乐部"

cd D:/爬虫俱乐部

然后我们把这个do文件保存在这个路径中,命名为爬虫俱乐部。接着我们使用Stata14打开这个do文件,就出现了这样的情况:

如果我们将一个用Stata13写的程序,复制到了一个只有Stata14的电脑上,我们可以使用记事本打开do文件,然后复制内容,粘贴到Stata14中。但这样做无疑会加大我们的工作量。

在Stata14中有一个unicode命令,就可以帮助我们完成转码。这个命令有两个前提条件:第一,在使用这个命令之前,要清空数据,例如我们如果先使用了auto.dta,然后分析刚刚保存的do文件,就会报错,提示我们先清空数据:

第二,我们转的文件必须是在当前工作路径中的文件,文件的前面不能出现文件所在的路径。例如我们想要分析刚才保存的do文件,假如我们加入文件路径的话,就会报错:

因此在转换之前,我们需要先将文件所在的路径设置为当前的工作路径,然后再对文件进行分析:

这 时我们就可以看到这个文件是需要进行转码的。在进行转码之前,我们需要设置要转换的文件的编码,可以使用help encoding来查看可以转换的编码,然后用unicode encoding set来进行设置,在这里我们需要设置为gb18030,然后进行转码,再打开这个do文件:

我们看到在Stata14中这个do文件就不会出现乱码了。

假如我们又用stata13写了一个do文件,内容和刚才的一样,并且覆盖了刚才转码后保存的do文件。然后我们用Stata14打开这个do文件,发现又出现了乱码:

但是此时不管我们是对这个文件进行分析,还是进行转码,都会提醒我们这个文件已经进行过转码了:

这主要是在之前的转码中生成了一个名为“bak.stunicode”的文件夹,里面保存了文件在转码前的备份:    

这 就造成了这个路径下以这个名称命名的文件不能够再进行转码。如果我们需要对这个覆盖过后的文件进行转码,需要先把这个文件夹删除,我们可以直接右击这个文 件夹选删除,也可以用unicode erasebackups这个命令,由于Stata的开发者认为删除掉这个备份是一个糟糕的做法,因此这个命令需要加上一个badidea选项:

我们可以看到,在删除了这个文件夹后,我们就可以将覆盖后的文件进行转码。

这 个命令不仅仅可以对do文件和dta文件进行转码,也可以用于其它文件中。例如高管任职这个案例,我们将股票代码为000001的平安银行的源代码抓取下 来保存在爬虫俱乐部这个文件夹下,保存为000001.txt。我们如果直接读入这个txt文件,就会出现一开始那个截图里的乱码。因此我们也需要对这个 文件进行转码。我们先对这个需要转码的文件进行分析:

我们可以看到提示我们在默认状态下有些行无法进行转码。经过笔者的比较,发现对于一些较为复杂或生僻的字,在默认的状态下转码后依然是乱码,在对信息进行提取后还会出现这样的情况:

在这里,我们可以使用transutf8这个选项解决这个问题。但是Stata的help文件中提示我们,除非我们在转码时Stata提示我们定义这个选项,否则我们就不要用。我们加入这个选项后,导入整理后再看这条信息:

这样,我们就可以用Stata14对从新浪网抓取的高管任职数据进行处理了。


接下来是空气质量报告

全国空气质量如下

江西的朋友,记着出门戴口罩哦!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

文字编辑:司海涛

技术总编:刘贝贝



往期推文推荐:

1.中国高校财经、管理与综合类期刊灌水排行榜

2.关于RTF你不知道的命令

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

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

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

投稿邮箱:xueyuan19920310@163.com

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

欢迎关注爬虫俱乐部


微信扫一扫
关注该公众号