查看原文
其他

论egen的花样用法(一)

徐露露 Stata and Python数据分析 2022-03-15

大大大大大新闻————爬虫俱乐部新推出了视频讲解环节。小编突然浮现出一个画面——看着视频嗑着瓜子学着stata,妈妈再也不用担心我的stata了!详情请猛戳文章下面的视频。

诸君安!最近咱们爬虫俱乐部推出了好多stata15里实用、便捷的新命令:rownumbputdocxputpdft2docxreg2docx......大家是不是看得眼花缭乱啦?所以,贴心的小编打算让大家放松放松,回顾并复习一下之前学过的命令,这一次让我们总结一下egen这个强大的命令吧!

gen与egen的区别

一般来说,我们会使用gen来产生一个新的变量、或者生成一个字符型变量、或者直接跟一个计算表达式如gen y=x1+4*x2,虽然也有少量函数,但仍然不能满足我们的要求。而egengen的扩展和深入,其特点就是强大的函数功能,它可以与多种函数组合,从而满足我们的需求。接下来就让小编我来给大家一一介绍。由于本篇推文较长,我们将分成上下两篇推送给大家。

1

egen与常见统计量

egen与统计量函数搭配可以生成关于变量A的多个描述性统计量:

clear

set obs 10

gen A=_n  //生成1-10的连续序列

gen num=_N  //生成的是总的观测值数

egen avg=mean(A)  //得到变量A的均值

egen med=median(A)  //得到变量A的中位数

egen std=sd(A)  //得到变量A的标准差

egen max=max(A)

egen min=min(A)

*我们在处理数据时,经常会进行分组,所以我们将变量A分成奇偶数两组

gen se=mod(A,2)  //根据奇偶数分组

bysort se(A):egen sum=sum(A)  //根据奇偶数分组,A只参与排序,不参与分组,求分组后组列总和

bysort se A:egen sum1=sum(A)  //se与A既参与分组也参与排序,求分组后的组总和

bysort se(A):gen sum2=sum(A)  //根据奇偶数分组,求分组后的组列累计和

sort se

list

值得注意的是:

1.(A)表示只参与排序,不参与分组,如果不加(),则表示A也参与分组。

2.egen与sum搭配时,生成的是列总和,而gen与sum搭配时生成的是列累积和。

结果如下:

2

egen与seq

egen与seq搭配可以生成一串有规律的连续序列:

clear

set obs 10

gen a1 = _n

egen a2 = seq()

range a3 1 _N 

gen se=mod(a1,2) //根据奇偶数分组

bysort se (a1):egen b = seq(), block(2)  //根据奇偶数分组之后,连续序列中的每个数字重复两次

bysort se a1:egen b1 = seq()  //a1也参与分组

bysort se (a1):egen c = seq(), from(3) to(1)  //分组之后,变量c的序列从3-1递减并循环

bysort se (a1):egen d = seq(), to(3)  //分组之后,变量d的序列1-3循环

list

在这里,我们可以使用三种不同的方法生了1-10的连续序列。加入(a1)表示只参与排序,不参与分组,去掉()之后,a1也参与分组。此外,block()表示连续序列中每个数字的重复次数,from(a)to(b)表示变量从a开始循环,到b结束。若不设定from(),则默认是从1开始循环

结果如图:

3

egen与fill

egen与fill()搭配也可以生成一串规律的序列,在某些情况下,fill与seq起到的效果是一样的,不同点就在于seq的步长只能为1,而fill可以自己设定步长。

clear

set obs 10

egen a=fill(1 2)

egen b=fill(6(-3)3)

egen c=fill(1 1 2 2)

fill()函数不仅可以进行以上操作,还可以生成固定模式的序列,我们只需要将固定模式重复两次, stata就能明白我们的意思了:

egen e=fill(1 1 2 1 1 2)

egen f=fill(-3(3)6 -3(3)6)

egen g=fill(10 20 to 50 10 20 to 50)

list

结果如下:

还有一点值得注意fill不能与bysort结合使用

clear

set obs 10

gen A=_n

gen se = mod(A,2)

bysort se:egen h=fill(1 1 2)

stata报错:

4

egen与diff

egen与diff搭配时,若varlist中的变量值都相同,则给differ赋值0,否则为1。

use http://www.stata-press.com/data/r15/egenxmpl3, clear

egen differ = diff(inc*) 

list in 8/16

结果如下:

今天咱们就先介绍这4个搭配,那么咱们下篇推文再见!

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

https://v.qq.com/txp/iframe/player.html?vid=e0534wa2e4r&width=500&height=375&auto=0

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

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

                        文字编辑:王   明

技术总编:刘贝贝



往期推文推荐:

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

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

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

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

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

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

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

8.矩阵和宏的故事

9.shellout,open anything

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



关于我们

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

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

投稿邮箱:statatraining@163.com

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

欢迎关注爬虫俱乐部

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

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