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;
另一答案
假设数据结构完全相同,并且两个数据集在相同的相对顺序中具有完全相同的观察数量,则可以执行此操作。
基本上将第一个数据集中的数据复制到临时数组中,然后从第二个数据集中读取数据并执行减法操作。
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数学两个表之间的差异的主要内容,如果未能解决你的问题,请参考以下文章