用 PROC COMPARE 比较两个数据集

一 、可比较的内容如下:

1:数据集的属性是否一致
2:变量及属性是否一致
3:观测是否一致

以下时2个用来练习的简单数据集,可运行相应代码查看结果:

data one;
infile  datalines delimiter = ',';
input id $ name $ status $ grade $ ;
datalines;
001,huahua,A,A
002,gaga,B,B
003,cici,C,C
004,qiqi,D,D
005,mumu,E,D
;
run;

data two;
infile  datalines delimiter = ',';
input id $ name $ state $;
datalines;
001,huahua,A
002,gaga,B
003,cici,C
004,qiqi,D
005,mumu,E
;
run;

二、不同的比较类型

2.1 基本比对

以下代码会对数据集的方方面面进行全面比对,选项printall 会将所有的比对结果打印出来。

PROC COMPARE BASE = one COMPARE = two PRINTALL;
RUN; /*PRINTALL option prints a full report of the differences */

2.2 比较不同数据集中的变量

指定比对变量时若变量名一致,则只需VAR语句,若不一致,则需WITH 语句。

PROC COMPARE BASE = one COMPARE = two ;
    VAR NAME;(define variable in base)
    /*WITH variable_name;*/(define variable in compare)
RUN;

2.3 比较同一数据集中的不同变量

PROC COMPARE BASE = one briefsummary;
var status;
with grade;
RUN;

2.4 通过共同的ID比较2个数据集

在通过共同的ID 比较数据集签,应先对两个数据集基于ID排序,

PROC SORT DATA=  ONE; BY ID;RUN;
PROC SORT DATA=  TWO; BY ID;RUN;

PROC COMPARE BASE = ONE COMPARE = TWO;
ID  id;
RUN;

2.5 仅比对两个数据集的属性

PROC COMPARE BASE = ONE COMPARE = TWO NOVALUES LISTVAR;
RUN;

也可以将比对结果利用以下选项输出:
option out=dataset-name outnoequal outbase outcomp outdiff;
outequal :只包含不等的记录
outbase : 输出base 中的不相等的记录
outcomp : 输出compare 中的不相等的记录
outdiff : 不等记录间的差异。
也可以通过OUTSTATES 输出差异的统计数据;

*注:以上代码中均将 数据集 one 作为base ,two 作为对比数据集,谁为base没有区别,但须明确需要对比的内容。

以下几张图片是SAS HELP 内关于没有提到的属性截图,一般不太常用,如果需要可查看帮助指南。
用 PROC COMPARE 比较两个数据集_第1张图片
用 PROC COMPARE 比较两个数据集_第2张图片
用 PROC COMPARE 比较两个数据集_第3张图片

你可能感兴趣的:(SAS,学习笔记)