9. 用SPSS快速“横向合并”数据文件(分享之9)
福建省疾控中心  潘宝骏(13509366051@163.com)
*“横向合并”MATCH (例数相同、变量增加)数据.
*(1) 建立数据文件“数据库1”:id 是数据型,宽度8;sex、area 都是字符串,宽度均为4;
    birth 是出生日期,日期型 dd-mmm-yyyy.
DATA LIST FREE /id(N8) name(A10) sex(A4) birth(DATE) area(A4) age score1.
BEGIN DATA.
1 张××   男 08-DEC-1952  XJ  23  92.3
2 李××   女 07-NOV-1962  GS  29  87.5
3 王××   男 12-AUG-1973  SX  25  95.7
4 赵××   女 28-JAN-1946  XZ  26  85.6
5 欧阳×× 男 28-FEB-1946  QH  24  79.2
END DATA.
FORMATS id age(F8.0) score1(F8.1).
SAVE OUTFILE='d:\spss\sav\数据库1.sav'.
 
*(2) 建立数据文件“数据库2”.
DATA LIST FREE /id(N8) score2 score3 .
BEGIN DATA.
1 95.7 96.1
2 88.5 89.4
3 94.2 90.5
4 83.1 82.9
5 76.1 79.4
END DATA.
FORMATS score2 score3(F8.1).
SAVE OUTFILE='d:\spss\sav\数据库2.sav'.
 
*(3) “横向合并”MATCH 数据文件 “数据库1” 和 “数据库2”
   (如果有更多数据库,就增加更多行命令即可;存储路径硬盘可自定).
MATCH FILES FILE = 'd:\spss\sav\数据库1.sav'
     /FILE = 'd:\spss\sav\数据库2.sav' /by id.
SAVE OUTFILE = 'd:\spss\sav\数据库3.sav'.
GET FILE = 'd:\spss\sav\数据库3.sav'.
LIST.
*输出结果是:.
* id  name    sex    birth   area  age  score1  score2  score3
  1  张××  男  08-DEC-1952  XJ   23   92.3    95.7   96.1
  2  李××  女  07-NOV-1962  GS   29   87.5   88.5   89.4
  3  王××  男  12-AUG-1973  SX   25   95.7    94.2   90.5
  4  赵××  女  28-JAN-1946  XZ   26   85.6    83.1   82.9
  5  欧阳×× 男  28-FEB-1946  QH   24   79.2    76.1   79.4
Number of cases read:  5    Number of cases listed:  5.
 
*“横向合并”MATCH (例数相同、变量增加)数据的注意事项:.
*a.通常用于两个数据库(其例数相同/类似、但变量数不同)的合并.
*b.每个个案须有一个独有的 id 号, 来告知另一个数据库的变量与哪个 id 号对应.
*c.合并数据时,有时可用“KEEP”(除此之外其他变量舍弃)或“DROP”(除此之外其他变量保留).
*d.最多只能“横向合并”50 个数据库.
*e.在“横向合并”MATCH 数据前,所有数据库均须先按 id号“升序”(ascending)排列. 
*f.在“横向合并”MATCH 数据前,须肯定各数据库没有相同的变量名,不然合并后的数据库出错.
----------------------------------------------------------------------------------------------------