SAS数学两个表之间的差异

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAS数学两个表之间的差异相关的知识,希望对你有一定的参考价值。

有两个数据,他们的变量名称和布局完全相同

data data1;
input var$ val1 val2 val;
datalines;
A 0 8 8
B 9 8 7
C 7 2 3
;

data data2;
 input var$ val1 val2 val;
 datalines;
 A 0 7 8
 B 9 8 7
 C 5 2 3
;

想要在每个数字单元格中进行数学差异。寻找优雅和智能的方式。真正的数据集有更多的变量和列。

data want;
 input var$ val1 val2 val;
 datalines;
 A 0 1 0
 B 0 0 0
 C 2 0 0
;
答案
proc compare base=data1 compare=data2 out=diff outdif noprint;
   id var;
   run;

enter image description here

另一答案

假设数据结构完全相同,并且两个数据集在相同的相对顺序中具有完全相同的观察数量,则可以执行此操作。

基本上将第一个数据集中的数据复制到临时数组中,然后从第二个数据集中读取数据并执行减法操作。

data want;
  array _temp [1000] _temporary_ ;
  set data1 ;
  array _x _numeric_;
  do _n_=1 to dim(_x);
    _temp[_n_]=_x[_n_];
  end;
  set data2 ;
  do _n_=1 to dim(_x);
    _x[_n_] =_temp[_n_]-_x[_n_];
  end;
run;

确保临时数组的大小足够大。制作太大不会伤害任何东西。

如果您不想计算所有数字字段的差异,可以将_numeric_变量列表更改为更具体的变量列表。任何未包含在数组中的变量都将具有从第二个数据集中读取的值。

以上是关于SAS数学两个表之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试提高查找两个表之间差异的 Oracle SQL 的性能

显示来自两个不同表的两列之间的差异(比较表)

具有不同表结构的两个 DB2 表中的数据值之间的差异

Mysql 只返回两个表之间存在差异的记录

比较与特定字段有关的两个表之间的差异时如何正确连接

两个表之间的猪拉丁计数差异