论egen的花样用法(二)

2017-08-10 徐露露 爬虫俱乐部 爬虫俱乐部

大大大大大新闻————自公众号推送视频讲解环节以来,深受广大读者朋友的喜爱。近日向我们提问的粉丝也是大幅增加呐!为了便捷管理相关信息,提高工作效率,我们对提问方式做了略微调整哟~提问者需点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

在上篇的推文中论egen的花样用法(一)》,咱们介绍了egen与4个函数命令搭配可以产生怎样的效果,那么接下来,小编就给大家介绍另外5个好用的搭配。

1.egen与row function

由上篇推文我们知道,我们可以计算列总和列均值列标准差,如果想要得到关于的各个描述性统计量,可以进行以下操作:

use http://www.stata-press.com/data/r13/egenxmpl4, clear

egen total = rowtotal(a b c)  // 得行总和

egen avg = rowmean(a b c)  //得行均值

egen std = rowsd(a b c)  //得行标准差

egen miss = rowmiss(a b c)  //得行缺失值的个数

egen min = rmin(a b c)  //得该行最小值

egen last = rlast(a b c)  //得该行最后一个变量的值

list

结果如下:

2.egen与pc与pctile

如果想得到某列变量中各个观测值所占的比例或者百分比或者指定百分位数的值时,我们可以这样操作:

use auto,clear

keep mpg

egen sum=sum(mpg)  //得到mpg的列总和

egen per=pc(mpg),prop  //mpg中每个观测值的值占列总和的比例

egen per_1=pc(mpg)  //mpg中每个观测值的值占列总和的百分数

egen pct=pctile(mpg),p(25)  //生成mpg的第25百分位上的值

egen pct_1=pctile(mpg)  //生成mpg的中位数

sort mpg  //按照mpg的大小来排序

list in 1/10

如果添加了prop,则生成的是每个观测值所占的比例,如果不添加,则生成的是每个观测值所占的百分比。p()括号内可以自由设定具体百分位数,默认为中位数。

结果如图:

3.egen与rank

egen与rank搭配可以生成几个不同样式的排列顺序:

sysuse auto, clear

keep in 16/30

keep mpg

egen rank_u = rank(mpg), unique  //无重复名次

egen rank = rank(mpg)  //正序排名,排名有可能会出现0.5

egen rank_r = rank(-mpg)  //倒序排名

egen rank_t = rank(mpg), track  //track指定最小观测值排名为1,若出现相同数字,排名并列

egen rank_f = rank(mpg), field  //field指定最大观测值排名为1,若出现相同数字,排名并列

sort rank_u

list

rank_u排名的具体算法为:按照大小排序之后,相同数字在该列的排名之和除以相同数字的个数。

结果如下:

4.egen与anyvalue与anymatch

use auto, clear

keep rep78

egen a = anyvalue(rep78), v(3/5)  //若rep78不为3、4、5,则为缺失值

egen b = anymatch(rep78), v(3/5)  //若rep78不为3、4、5,则赋值0,否则赋值1

list in 1/10

结果如下:

5.egen与std

use http://www.stata-press.com/data/r15/states1, clear
egen stdage = std(age)  //将age标准化为均值为0,方差为1的随机变量
sum age stdage

结果如下:

corr age stdage  //查看二者的相关性,发现新变量和原始变量是完全相关

除了可以将变量转化为标准正态分布,还可以转化为指定均值和方差的随机变量。

egen newage1 = std(age), std(2)  //生成均值为1,标准差为2的随机变量

egen newage2 = std(age), mean(2) std(4)  //生成均值为2,标准差为4的随机变量

egen newage3 = std(age), mean(2) 

sum age new*

不指定mean(),则默认均值为1;不指定std(),则默认标准差为1。

结果如下:

corr age new*  //查看相关性,发现新变量和原始变量是完全相关

什么?!没看懂!!不要紧!!戳下面,听爬虫小将的详细讲解,也欢迎大家的批评指正哟!


以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

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

                        文字编辑:徐露露

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

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

3.命令sum2docx输出统计量表到docx文件

4.reg2docx报告你的实证结果吧!

5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件

6.putdocx+wordconvert—将实证结果输出到Word.docx)文档

7.Stata 15Markdown——没有做不到,只有想不到!

8.矩阵和宏的故事

9.shelloutopen anything

10.Putpdf--神奇的转换工具



关于我们

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

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

投稿邮箱:statatraining@163.com

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

欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号