专栏名称: Idata
经管学术自媒体,我们关注统计软件和数据分析。本着简单的初心,陪伴着您百尺竿头,更进一步。
目录
相关文章推荐
中国基金报  ·  金融监管总局批复:同意解散! ·  13 小时前  
中国基金报  ·  重大资产重组,终止! ·  15 小时前  
中国基金报  ·  突发!美国,宣布暂停! ·  20 小时前  
中国基金报  ·  痛悼!巨星陨落 ·  5 天前  
51好读  ›  专栏  ›  Idata

egen的功能不够用?我们还有egenmore!

Idata  · 公众号  ·  · 2017-08-26 22:00

正文

Stata里已经有了分组变量,如何确定每组里有多少个唯一的ID呢?

 

最开始遇到这个问题,我第一想到的是duplicates tag,但实验之后发现不行。于是写了很长一段代码,比如这样:

 

levelsof group_var,local(num)

local i=1

foreach v of local num{

preserve

keep if group_var==`v'

distinct id

gen ndistinct=r(ndistinct)

save data`i',replace

restore

local i=`i'+1

}

global N=`i'-1

use data1,clear

forvalue i=2/$N{

append using data`i'

}

 

思路很简单,就是把整个数据集按照分组变量(group_var)切割开,逐个去算每个组里有多少唯一的ID(使用distinct命令,ssc install distinct)。最后再把所有的子数据集再合并起来。可以说很麻烦了。

 

这个时候看到Statalist上有人说,可以考虑使用egenmore(ssc install egenmore),egenmore拓展了egen的功能,增加了更加丰富的运算。egenmore其实还是用egen的命令,比如前面的分组唯一ID的问题,可以这样写:


egen num=nvals(id),by(group_var)

 

egenmore里增加了很多个模块,包括:


Grouping and graphing

Strings, numbers and conversions

Dates, times and time series

Summaries and estimates

First and last





请到「今天看啥」查看全文

推荐文章
中国基金报  ·  金融监管总局批复:同意解散!
13 小时前
中国基金报  ·  重大资产重组,终止!
15 小时前
中国基金报  ·  突发!美国,宣布暂停!
20 小时前
中国基金报  ·  痛悼!巨星陨落
5 天前
历史震惊你  ·  揭秘丨1946年,吓死人的恐怖中药铺!
8 年前
悦读文摘  ·  读书品茶,只闻花香,淡看喜悲
8 年前