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: Как объединиться, если А не есть Б

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *