查看原文
其他

软件应用 | Stata中的小清新命令:添加观测值

数据Seminar 2022-12-31

The following article is from Stata and Python数据分析 Author 爬虫俱乐部

 

本文转载自公众号Stata and Python数据分析


导读

长期使用Stata的用户都知道Stata所包含的命令众多、功能各异,有时一个命令有很多option,用以满足用户的不同需求。那有没有一些一看就懂,一用就会的简单命令呢,今天就给大家介绍四个在数据集中添加观测值的小命令,包括生成观测值的obs命令、在数据集中添加或插入观测值的insobs命令、在数据集末尾添加更多观测值的moresobs命令、用n倍的观测值去替换数据集中观测值的expand命令。这几个命令的功能是有一些相似的,但是也有不同之处,大家了解之后就可以根据需要选择合适的命令~

Part1obs

对于obs,大家肯定都非常了解了。set obs 可以改变当前数据集的观测值个数。语法也十分简单:

set obs #

#就表示想要生成的观测值的个数,需要注意的是设置的观测值个数必须大于等于当前数据集中的观测值数量。如果数据集中已经包含变量值,设置的新观测值的多余部分则被记为缺失值。

大家可以根据下边的程序再次感受一下obs的功能:

clear all  
set obs 10 //生成10个观测值
gen x = _n //创建变量x (x=1, 2 ,3·········10) 
gen y = x^2 //创建变量y (y=1,4,9……………100)
set obs 15

程序运行结果分别如图中所示:

Part2insobs

insobs命令的功能是添加或者插入观测值。如果不添加选项,直接使用insobs obs则表示在数据集末尾添加观测值。obs则表示想要添加或者插入的观测值的数量。

insobs obs

如果是想要在数据集指定位置之前或之后插入观测值,就可以结合 before(inspos)after(inspos)选项使用,语法如下:

insobs obs, before(inspos) | after(inspos)

举个例子吧~ 首先,如果是一个空数据集,这时使用insobs命令可以直接生成观测值,此时insobs 10set obs 10的效果是一样的:

clear all
insobs 10 //生成10个观测值
gen x = _n //生成数值

如果数据集中已经存在数据,此时再执行insobs 5,则表示在数据集末尾添加五行观测值,且全部为缺失值。

insobs 5 //在数据集末尾插入观测值

如果在生成10个观测值后,我们想要在这10个观测值中间插入观测值呢?这时就可以使用刚刚提到的before(inspos)after(inspos)选项,使用方法如下:

clear all  
set obs 10 //生成10个观测值
gen x = _n //创建变量x (x=1, 2 ,3·········10) 
insobs 3, after(5) //在第五个观测值之后增加3行新的观测值

Part3moreobs

我们知道obs是观测值(observations)的意思,那么顾名思义,moreobs就是在数据集末尾添加更多观测值。moreobs命令的语法如下所示:

moreobs #

如果不指定#的值,则默认为1,而且moreobs命令生成的观测值也是缺失值。

话不多说,直接上案例:

clear all  
set obs 10 //生成10个观测值
gen x = _n //创建变量x (x=1, 2 ,3·········10) 
gen y = x^2 //创建变量y (y=1,4,9……………100)
moreobs 1 //在数据集末尾添加一个观测值,相当于moreobs

那么如果想在数据集末尾添加5行观测值,只需将#改成5即可:

clear all 
set obs 10 // 生成10个观测值
gen x = _n // 创建变量x (x=1, 2 ,3·········10) 
gen y = x^2 // 创建变量y (y=1,4,9……………100)
moreobs 5 // 在数据集末尾添加五行观测值

Part4expand

expand命令的功能是用n倍数量的观测值去替换当前数据集中的观测值,其中 n 等于用户给出的数值表达式四舍五入后最接近的整数,如果小于1或等于缺失值 ,则将其解释为1,不进行原数据的复制。expand命令的具体语法如下:

expand [=]exp [if] [in] [, generate(newvar)]

其中ifin可以为expand添加条件和选择范围,generate(newvar)选项可生成新变量newvar,用于标记原始数据(newvar等于0)和复制数据(newvar等于1)。这样的话,若要还原原始数据,则只需要通过保留newvar等于0的数据来实现,即keep if newvar==0

接下来通过一个例子来看一下expand命令的使用效果:

webuse stackxmpl, clear //调入数据stackxmpl
list //显示数据

将原始数据复制1份添加在当前数据集中,即用2倍的原始数据替换当前数据,程序如下:

expand 2  
list 

expand还可以根据指定变量的数值进行替换数据,对于stackxmpl这个数据集,expand b就表示根据变量b的值对数据进行扩充,这里变量b第一、第二行观测值分别为2和6,因此expand b就将当前数据集替换为有两行第一行观测值和六行第二行观测值,即添加了原始数据第一行观测值的1倍和第二行观测值的5倍。

webuse stackxmpl, clear  
list 
expand b  
list

通过上边的介绍,大家是不是了解了这几个命令的不同之处了呢~






星标⭐我们不迷路!想要文章及时到,文末“在看”少不了!

点击搜索你感兴趣的内容吧


往期推荐


统计计量 | 一文读懂11个回归分析方法测度原理

统计计量 | 谢宇:定量研究最重要的是什么?

数据治理 | 如何实现SQL数据库的横向匹配

统计计量 | 经济学实证研究路在何方?

软件应用 | 给你的图形化个妆:Stata绘图常用选项汇总-下篇

软件应用 | 给你的图形化个妆:Stata绘图常用选项汇总-上篇

软件应用 | Stata:面板数据缺失值与多重补漏分析-twofold





数据Seminar




这里是大数据、分析技术与学术研究的三叉路口


推荐 | 青酱


    欢迎扫描👇二维码添加关注    

点击下方“阅读全文”了解更多

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

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