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