SAS: сравнение большого столбца в одной таблице с несколькими столбцами в отдельной таблице - PullRequest
0 голосов
/ 08 октября 2018

У меня есть таблица с приблизительно 15000 строковых значений в одном столбце, которую я хотел бы сравнить с несколькими столбцами в отдельной таблице.

Вот пример таблицы 1 (столбец имеет около 15000 значений:

List1
AA567
AA698
...
ZZ789

Это пример таблицы 2 (каждый столбец содержит приблизительно 150 записей):

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

Если запись в списке List1 совпадает с какой-либо из записей в столбцах с 1 по 15, я быхотел бы вернуть '1' или какое-то указание на совпадение. Я подумал, что мог бы использовать функцию объединения для объединения столбцов в таблице 2, но я не уверен, как можно сравнить с отдельной таблицей, которая имеет несколько тысяч записей.

1 Ответ

0 голосов
/ 08 октября 2018

Вы не упоминаете, хотите ли вы один флаг или один для каждой записи в 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

...