SAS:将一个表中的大列与单独表中的多列进行比较

时间:2018-10-08 13:06:53

标签: arrays string loops sas

我有一个表,其中一列包含大约15000个字符串值,我想将其与单独表中的几列进行比较。

这是表1的示例(列大约有15000个值:

List1
AA567
AA698
...
ZZ789

这是表2的示例(每列大约有150个条目):

Column1   Column2  Column3   ...   Column15
AA467     AA567    AA899           AA111
...       ...      ...             ...
ZZ345     ZZ567    ZZ711           ZZ789

如果List1中的条目与Column1到Column15中的任何条目相匹配,我想返回一个“ 1”或某些匹配的指示。 我认为可以使用合并函数在表2中的各个列之间进行合并,但是我不确定如何与具有数千个条目的单独表进行比较。

1 个答案:

答案 0 :(得分:1)

您没有提及是否要为LIST中的每个条目设置一个标志还是一个标志。这应该给您一些想法。

data list1;
   input target :$5.;
   cards;
AA567
AA698
ZZ789
;;;;
   run;

data column;
   input (Column1-Column3  Column15)(:$5.);
   cards;
AA467     AA567    AA899           AA111
ZZ345     ZZ567    ZZ711           ZZ789
;;;;
   run;
proc print;
   run;
data flag;
   if _n_ eq 1 then do;
      array list[3] $5 _temporary_;
      do i=1 to dim(list) while(not eof);
         set list1 end=eof;
         list[i] = target;
         end;
      end;
   flag = 0;
   set column;
   array column[*] column:;
   do i = 1 to dim(list);
      flag + list[i] in column;
      end;
   drop i target;
   run;

proc print;
   run;

enter image description here