[原创]stata分组后列出变量的值

这里只有作者精心编写的研究经历!
回复
头像
hellohappy
网站管理员
网站管理员
帖子: 280
注册时间: 2018年11月18日, 14:27
Been thanked: 2 time

#1 [原创]stata分组后列出变量的值

未读文章 hellohappy » 2019年6月05日, 10:06

前言:
    相信大家都知道stata有一个分组命令 by 吧,用by命令生成的变量,是一个含有大量冗余的变量,我们要怎么把by对应的每一个变量结果列出来呢?(如果没听懂我说什么,没关系,继续读后面。)

1.最快的方法(不能根据需求改变输出):
Spoiler
Show
    帮助文件命令是 help tabulate_summarize
help
Show
tabulate_summarize的help文件1.png
tabulate_summarize的help文件1.png (32.44 KiB) 查看 312 次
tabulate_summarize的help文件1.png
tabulate_summarize的help文件1.png (32.44 KiB) 查看 312 次
tabulate_summarize的help文件2.png
tabulate_summarize的help文件2.png (48.96 KiB) 查看 312 次
tabulate_summarize的help文件2.png
tabulate_summarize的help文件2.png (48.96 KiB) 查看 312 次
tabulate_summarize的help文件3.png
tabulate_summarize的help文件3.png (34.03 KiB) 查看 312 次
tabulate_summarize的help文件3.png
tabulate_summarize的help文件3.png (34.03 KiB) 查看 312 次
tabulate_summarize的help文件4.png
tabulate_summarize的help文件4.png (18.14 KiB) 查看 312 次
tabulate_summarize的help文件4.png
tabulate_summarize的help文件4.png (18.14 KiB) 查看 312 次

Code: 全选

sysuse auto,clear //加载默认stata的数据
tabulate mpg, summarize(price)
    其中,mpg是用于分组的变量,price是我们要研究的变量。

    结果:
tabulate生成分组信息.png
tabulate生成分组信息.png (25.16 KiB) 查看 314 次
tabulate生成分组信息.png
tabulate生成分组信息.png (25.16 KiB) 查看 314 次
2.1 by命令:

    分组命令的介绍我单独写了一贴 --> 点这里去

2.2 分组生成变量举例:

    根据mpg变量分组,生成price变量的均值,命令如下:

Code: 全选

sysuse auto,clear //加载默认stata的数据
by mpg, sort: egen mean_price = mean(price)
    我们看看运行完后,这些变量长什么样:
by命令以后生成的变量形式.png
by命令以后生成的变量形式.png (14.96 KiB) 查看 335 次
by命令以后生成的变量形式.png
by命令以后生成的变量形式.png (14.96 KiB) 查看 335 次

2.3 生成不重复的变量mean_price

    上面图中数据是根据mpg重复赋值的,但如果我们希望得到的数据是,一个mpg对应一个mean_price,且mpg不重复,我们应该怎么办?
    这时候你应该回忆起这个命令 --> duplicates 。这个命令的介绍,请 --> 点击这里
    也就是,我们只需要 duplicates example 命令就可以得到一个mpg对应一个mean_price,而不会重复的数据,命令如下:

Code: 全选

duplicates example mpg mean_price
    命令执行结果如下:
duplicates命令执行结果.png
duplicates命令执行结果.png (17.49 KiB) 查看 335 次
duplicates命令执行结果.png
duplicates命令执行结果.png (17.49 KiB) 查看 335 次

   这个结果图的最后两列就是我们要的结果了!
 

Link:
Hide post links
Show post links

头像
hellohappy
网站管理员
网站管理员
帖子: 280
注册时间: 2018年11月18日, 14:27
Been thanked: 2 time

#2 列出分组后的变量有多少非空值

未读文章 hellohappy » 2019年6月08日, 19:53

前言:
    相信都会遇到要根据分组对象检查有多少非空值了,这是我们选择样本的和描述样本经常要做的事。由于目的和结果都和上贴很像,我就不唠叨了。直接给代码。

目的:
    比如面板数据为:时间 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中以后大概长这样:
列出分组后的变量有多少非空值.png
列出分组后的变量有多少非空值.png (24.76 KiB) 查看 324 次
列出分组后的变量有多少非空值.png
列出分组后的变量有多少非空值.png (24.76 KiB) 查看 324 次
 

Link:
Hide post links
Show post links


回复