有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~
诸君安!在往期推文中,我们介绍了Mata的基本用法。因为Mata中的矩阵内存远小于Stata矩阵所占用的内存,因而在处理复杂矩阵时,Mata备受青睐。如果我们想在Stata中处理一个足够长的网页源代码时,命令infix(每一行最多读入50多万的字符)就不能将网页源代码导入Stata,这时候我们就可以考虑将源代码导入Mata,并进行相关的处理分析。如何实现这样的操作呢?今天小编就带着大家一睹为快啦。
我们以平安银行高管任职网页为例,部分网页源代码如下所示:
首先,用到copy命令抓取网页源代码到temp文档中,并进行转码,命令如下:
clear
cd e:/
copy "http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManager/stockid/000001.phtml" temp.txt, replace
unicode encoding set gb18030
unicode translate temp.txt, transutf8
unicode erasebackups, badidea
接下来,我们将temp文档导入Mata
mata //进入Mata环境
file = cat("temp.txt") //将文件temp读入矩阵file中
file = select(file, ustrregexm(file,`"</div></td>"')) //保留矩阵file中含有“</div></td>”的行
file = select(file, !ustrregexm(file,`"(</strong>)|(^\s*</div></td>$)"')) //保留file中不含有“</strong>”或者开头是空白字符且结尾是“</div></td>”的行
file = ustrregexra(file, "\s+|<.*?>", "") //替换矩阵file中空白字符或者尖括号中的任何内容为空
end
为了让Mata中处理好的数据链接到Stata,我们先在Stata中生成一个字符型的空变量data:
clear
set obs 1000
gen str50 data =""
接着,进入Mata环境,实现Stata与Mata的链接:
mata
st_sview(X=.,.,"data") //实现Stata与Mata的交互
X[1..rows(file)]=file //将file的值赋给矩阵X
end
br
命令注释:
cat(): 读入外部.txt文件到Mata矩阵的函数;
select():保留满足条件的行、列或向量的函数
st_sview(): 读取Stata当前内存的字符型数据,并赋给Mata矩阵,st_sview()不返回任何结果,并且当Mata中数据发生变化时,对应的Stata中的数据也发生变化,很好的实现了Mata与Stata的交互。
结果如下:
接着,我们将数据分为高管姓名、高管职位、起始日期和终止日期4列,并删除空白的行:
forvalues j = 1/3 {
gen data`j' = data[_n + `j']
}
keep if mod(_n, 4) == 1
rename (data - data3) (姓名 职务 起始日期 终止日期)
drop if name==""
br
结果如下:
看不懂的记得戳下方视频哦~
注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同纯属巧合!
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!
应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~
文字编辑:徐露露
技术总编:刘贝贝
往期推文推荐:
5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件
6.putdocx+wordconvert—将实证结果输出到Word(.docx)文档
7.Stata 15之Markdown——没有做不到,只有想不到!
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。
欢迎关注爬虫俱乐部
微信扫一扫
关注该公众号