[原创]stata分组后列出变量的值
- hellohappy
- 网站管理员
- 帖子: 306
- 注册时间: 2018年11月18日, 14:27
- Been thanked: 5 time
#1 [原创]stata分组后列出变量的值
前言:
相信大家都知道stata有一个分组命令 by 吧,用by命令生成的变量,是一个含有大量冗余的变量,我们要怎么把by对应的每一个变量结果列出来呢?(如果没听懂我说什么,没关系,继续读后面。)
1.最快的方法(不能根据需求改变输出):
2.1 by命令:
分组命令的介绍我单独写了一贴 --> 点这里去
2.2 分组生成变量举例:
根据mpg变量分组,生成price变量的均值,命令如下:
我们看看运行完后,这些变量长什么样:
2.3 生成不重复的变量mean_price
上面图中数据是根据mpg重复赋值的,但如果我们希望得到的数据是,一个mpg对应一个mean_price,且mpg不重复,我们应该怎么办?
这时候你应该回忆起这个命令 --> duplicates 。这个命令的介绍,请 --> 点击这里。
也就是,我们只需要 duplicates example 命令就可以得到一个mpg对应一个mean_price,而不会重复的数据,命令如下:
命令执行结果如下:
这个结果图的最后两列就是我们要的结果了!
相信大家都知道stata有一个分组命令 by 吧,用by命令生成的变量,是一个含有大量冗余的变量,我们要怎么把by对应的每一个变量结果列出来呢?(如果没听懂我说什么,没关系,继续读后面。)
1.最快的方法(不能根据需求改变输出):
Spoiler
Show
帮助文件命令是 help tabulate_summarize
其中,mpg是用于分组的变量,price是我们要研究的变量。
结果:
help
Show
Code: 全选
sysuse auto,clear //加载默认stata的数据
tabulate mpg, summarize(price)
结果:
分组命令的介绍我单独写了一贴 --> 点这里去
2.2 分组生成变量举例:
根据mpg变量分组,生成price变量的均值,命令如下:
Code: 全选
sysuse auto,clear //加载默认stata的数据
by mpg, sort: egen mean_price = mean(price)
2.3 生成不重复的变量mean_price
上面图中数据是根据mpg重复赋值的,但如果我们希望得到的数据是,一个mpg对应一个mean_price,且mpg不重复,我们应该怎么办?
这时候你应该回忆起这个命令 --> duplicates 。这个命令的介绍,请 --> 点击这里。
也就是,我们只需要 duplicates example 命令就可以得到一个mpg对应一个mean_price,而不会重复的数据,命令如下:
Code: 全选
duplicates example mpg mean_price
这个结果图的最后两列就是我们要的结果了!
Link: | |
Hide post links |
- hellohappy
- 网站管理员
- 帖子: 306
- 注册时间: 2018年11月18日, 14:27
- Been thanked: 5 time
#2 列出分组后的变量有多少非空值
前言:
相信都会遇到要根据分组对象检查有多少非空值了,这是我们选择样本的和描述样本经常要做的事。由于目的和结果都和上贴很像,我就不唠叨了。直接给代码。
目的:
比如面板数据为:时间 year 变量,个体 id 变量,要研究的变量名叫data;
找到各个个体有多少个非空年份的 data 变量数据,存储在变量total_data中;
标记出哪些个体是有数据的,哪些个体的所有年份都是缺失的,存储在变量havedata中。
代码:
注意,运行完代码不要保存,不然你的变量就被删了。复制到excel中即可。
比如我的举例到excel中以后大概长这样:
相信都会遇到要根据分组对象检查有多少非空值了,这是我们选择样本的和描述样本经常要做的事。由于目的和结果都和上贴很像,我就不唠叨了。直接给代码。
目的:
比如面板数据为:时间 year 变量,个体 id 变量,要研究的变量名叫data;
找到各个个体有多少个非空年份的 data 变量数据,存储在变量total_data中;
标记出哪些个体是有数据的,哪些个体的所有年份都是缺失的,存储在变量havedata中。
代码:
Code: 全选
use "你的路径/数据名.dta", clear
by id, sort: egen total_data = total(data!=.)
duplicates drop id total_data,force
gen havedata=1
replace havedata=0 if total_data==0
//接下来打开数据窗口,复制出来的就是要的结果了。
注意,运行完代码不要保存,不然你的变量就被删了。复制到excel中即可。
比如我的举例到excel中以后大概长这样:
Link: | |
Hide post links |