Таблица поиска
Лучше всего это сделать с помощью таблицы поиска:
Создать таблицу с schoolID
и SAT_code
, а затем выполнить объединение с исходной таблицей:
data schoolsat;
infile datalines delimiter=',';
input schoolID $3 SAT_code $25;
datalines;
ABC,East
XYZ,Midwest
MNO,East
;
run;
Это создает таблицу, которая отображает значения schoolID
на значения SAT_code
.Добавьте все необходимые комбинации в эту таблицу.
Как только вы это сделаете, в мире SAS есть два способа объединения данных.Оба эти примера являются «левыми соединениями», в которых будут храниться все записи из вашей таблицы statestats
, независимо от того, есть ли соответствующая строка в вашей новой таблице отображения schoolsat
, созданной выше.Если в schoolsat
нет соответствующего значения schoolID
, SAS оставит отсутствующее значение для SAT_code
в результирующей таблице.
SQL
proc sql;
create table stateSAT as
select a.*,
b.SAT_code
from statestats a
left join schoolsat b
on a.schoolID = b.schoolID;
quit;
DATA Шаг
proc sort data=schoolsat;
by schoolID;
run;
proc sort data=statestats;
by schoolID;
run;
data stateSAT;
merge statestats (in=a)
schoolsat;
by schoolID;
if a;
run;