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;

โปรดทราบว่าแถวทั้งหมดในชุดข้อมูลทั้งสองชุดจะถูกส่งกลับ แม้ว่าค่าจะหายไปเนื่องจากไม่มีค่า ID อยู่ในชุดข้อมูลทั้งสองชุดก็ตาม

ตัวอย่างที่ 2: ส่งกลับแถวที่มีค่าอยู่ในชุดข้อมูลแรก (ใน = 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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *