Sas: как объединить наборы данных на основе двух переменных
Вы можете использовать следующий базовый синтаксис для объединения двух наборов данных в SAS на основе соответствия двух переменных:
data final_data;
merge data1(in=a) data2(in=b);
by ID Store;
if a and b;
run ;
Этот конкретный пример объединяет наборы данных с именами data1 и data2 на основе переменных с именами ID и Store и возвращает только те строки, в которых значение существует в обоих наборах данных.
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: объединение наборов данных в SAS на основе двух переменных
Предположим, у нас есть следующий набор данных в SAS, содержащий информацию о продавцах компании:
/*create first dataset*/
data data1;
inputStoreID $;
datalines ;
1A
1B
1 C
2A
2C
3A
3 B
;
run ;
/*view first dataset*/
title "data1";
proc print data = data1;
Предположим, у нас есть другой набор данных, содержащий информацию о продажах каждого сотрудника в разных магазинах:
/*create second dataset*/
data data2;
input Store ID $Sales;
datalines ;
1 to 22
1 B 25
2 to 40
2 B 24
2 C 29
3 to 12
3 B 15
;
run ;
/*view second dataset*/
title "data2";
proc print data = data2;
Мы можем использовать следующий оператор слияния , чтобы объединить два набора данных на основе совпадающих значений в столбцах ID и Store , а затем вернуть только те строки, в которых значение существует в обоих столбцах:
/*perform merge*/
data final_data;
merge data1(in=a) data2(in=b);
by ID Store;
if a and b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
Результирующий набор данных возвращает строки, в которых значения столбцов ID и Store совпадают.
Примечание . Полную документацию по оператору слияния SAS можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в SAS:
SAS: Как выполнить слияние «один ко многим»
SAS: как использовать (in=a) в операторе слияния
SAS: Как объединиться, если А не есть Б