在临床研究,尤其是多中心的临床研究中,不同的医院用同一个问卷或电子病历表来收集信息(例如,A医院完成1500份,B医院完成1000份,C医院完成1200份),最后需要将来自不同医院的数据集进行合并,最终形成总数据集,这样的合并可以增加观测的记录数,属于纵向合并。如图1和图2所示
图1 纵向合并概念图
图2 纵向合并示意图
纵向合并的stata命令为append using,对应的stata菜单栏为data—combinedataset—append datasets.
下面我们用一个简单的例子来说明如何用stata软件合并数据库,希望通过这个简单的例子让大家知道stata中的append using命令。为了更好的理解后面的内容,先介绍几个概念:主数据集、从数据集、纵向合并。主数据集(master dataset)指的是当前在计算机内存中的数据;从数据集(using dataset)指的是将被合并到主数据集的数据集;纵向合并指的是增加记录(即样本量)。
举例说明(我们以stata自带的数据库来说明):
第一步,将auto数据集拆分为domestic数据集和foreign数据集。具体的语法为:
. sysuseauto, clear(打开系统自带的auto数据集)
. keep if foreign == 0(保留foreign=0的样本)
. keep make priceforeign(保留make price foreign这三个变量)
. save domestic(将其保存为domestic数据集)
. sysuseauto, clear(打开系统自带的auto数据集
. keep if foreign==1(保留foreign=1的样本)
. save foreign(将其保存为foreign数据集)
第二步:打开domestic数据集作为主数据集,将foreign数据集作为从数据集追加。具体的语法:
. use domestic, clear
. append using foreign
在纵向合并中我们需要注意:
1.数据集之间内容相同的变量的变量名要保持一致,如果不一致,stata无法知道如何将相似的变量追加在一起。所以需要在合并之前,逐个查看数据集的数据结构,确保数据集之间内容相同的变量的变量名一致。
2.变量的编码需要保持一致。若编码不一致(如主数据集的性别gender变量取值为1和2,从数据集的性别gender变量取值为0和1),stata并不报错,所以需要在合并以前,逐一查看数据集的变量编码(一般情况下可以通过变量管理器或者codebook命令),确保数据集之间相同变量的变量编码一致。如果不一致,可以用recode命令将其保持一致。合并后使用tabulate命令确认一下。
3.在进行纵向合并时,数据集无需针对变量排序,因为纵向合并的只是两个数据集对接在一起。通常情况下,这些数据集往往具有类似的变量结构,只是内容不同,也可以纵向追加,没有的变量会通过缺失值来代替。
参考:廉启国编著的《Stata数据统计分析教程》
领取专属 10元无门槛券
私享最新 技术干货