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