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