Sas: как использовать (in=a) в операторе слияния


При объединении двух наборов данных в SAS вы можете использовать оператор IN для возврата только тех строк, значение которых существует в определенном наборе данных.

Вот несколько распространенных способов использования оператора IN на практике:

Способ 1: вернуть строки, значения которых существуют в первом наборе данных (in=a).

 data final_data;
  merge data1 (in=a) data2;
  byID ;
  if a;
run ;

В этом конкретном примере объединяются наборы данных с именами data1 и data2 и возвращаются только те строки, в которых существует значение в data1 .

Способ 2: вернуть строки, значения которых существуют во втором наборе данных (in=b).

 data final_data;
  merge data1 data2 (in=b);
  byID ;
  if b;
run ;

В этом конкретном примере объединяются наборы данных с именами data1 и data2 и возвращаются только те строки, для которых существует значение в data2 .

Способ 3: вернуть строки, значения которых существуют в обоих наборах данных (in=a) и (in=b).

 data final_data;
  merge data1(in=a) data2(in=b);
  byID ;
  if a and b;
run ;

В этом конкретном примере объединяются наборы данных с именами data1 и data2 и возвращаются только те строки, где значение существует как в data1, так и в data2 .

Следующие примеры показывают, как использовать каждый метод на практике со следующими двумя наборами данных:

 /*create first dataset*/
data data1;
    inputIDGender $;
    datalines ;
1 Male
2 Male
3 Female
4 Male
5 Female
;
run ;

title "data1";
proc print data = data1;

/*create second dataset*/
data data2;
    input IDSales;
    datalines ;
1 22
2 15
4 29
6 31
7 20
8 13
;
run ;

title "data2";
proc print data = data2; 

Пример 1. Возврат всех строк

Мы можем использовать следующий оператор слияния без какого-либо оператора IN , чтобы объединить два набора данных на основе значения столбца ID и вернуть все строки из обоих наборов данных:

 /*perform merge*/
data final_data;
  merge data1 data2;
  byID ;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

Обратите внимание, что возвращаются все строки в обоих наборах данных, даже если значения отсутствуют из-за того, что значение идентификатора не существует в обоих наборах данных.

Пример 2. Возврат строк, значение которых существует в первом наборе данных (in = a)

Мы можем использовать следующий оператор слияния с (in=a) , чтобы объединить два набора данных на основе значения в столбце ID и вернуть только те строки, где значение существует в первом наборе данных:

 /*perform merge*/
data final_data;
  merge data1 (in = a) data2;
  byID ;
  if a;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

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

Пример 3. Возврат строк, значение которых существует во втором наборе данных (in=b)

Мы можем использовать следующий оператор слияния с (in=b) , чтобы объединить два набора данных на основе значения в столбце ID и вернуть только те строки, где значение существует во втором наборе данных:

 /*perform merge*/
data final_data;
  merge data1 data2(in=b);
  byID ;
  if b;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

Обратите внимание, что возвращаются только строки, для которых существует значение во втором наборе данных.

Пример 4. Возврат строк, значение которых существует в обоих наборах данных (in = a) и (in = b)

Мы можем использовать следующий оператор слияния с (in=a) и (in=b) , чтобы объединить два набора данных на основе значения в столбце ID и вернуть только те строки, где значение существует в обоих наборах данных:

 /*perform merge*/
data final_data;
  merge data1(in=a) data2(in=b);
  byID ;
  if a and b;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

Обратите внимание, что возвращаются только строки, для которых значение существует в обоих наборах данных.

Примечание . Полную документацию по оператору слияния SAS можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в SAS:

Как выполнить левое соединение в SAS
Как выполнить внутреннее соединение в SAS
Как выполнить внешнее соединение в SAS

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

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