Sas: كيفية الدمج إذا لم يكن a هو b
يمكنك استخدام بناء الجملة الأساسي التالي لدمج مجموعتي بيانات في SAS وإرجاع فقط تلك الصفوف التي توجد لها قيمة في مجموعة البيانات الأولى وليس الثانية:
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and not b;
run ;
يدمج هذا المثال تحديدًا مجموعات بيانات تسمى data1 و data2 ويعيد فقط الصفوف التي توجد بها قيمة في data1 وليس data2 .
يوضح المثال التالي كيفية استخدام بناء الجملة هذا عمليًا.
مثال: دمج مجموعتي بيانات في SAS باستخدام If A Not B
لنفترض أن لدينا مجموعتي البيانات التاليتين في SAS والتي تحتوي على معلومات حول مندوبي مبيعات الشركة:
/*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;
إذا استخدمنا عبارة الدمج التالية لدمج مجموعتي البيانات بناءً على قيمة عمود المعرف ، فسيتم إرجاع جميع الصفوف من مجموعتي البيانات:
/*perform merge*/
data final_data;
merge data1 data2;
byID ;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
ومع ذلك، يمكننا استخدام عبارات IN لإرجاع الصفوف التي توجد بها قيمة في مجموعة البيانات الأولى فقط وليس مجموعة البيانات الثانية:
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and not b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
لاحظ أنه يتم إرجاع الصفوف التي توجد لها قيمة فقط في مجموعة البيانات الأولى وليس مجموعة البيانات الثانية.
ملاحظة : يمكنك العثور على الوثائق الكاملة لبيان دمج SAS هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في SAS:
كيفية القيام بالانضمام الأيسر في SAS
كيفية إجراء صلة داخلية في SAS
كيفية إجراء صلة خارجية في SAS