วิธีดำเนินการ fuzzy matching ใน sas (พร้อมตัวอย่าง)


บ่อยครั้ง คุณอาจต้องการรวมข้อมูลสองชุดใน SAS โดยยึดตามสตริงที่ตรงกันที่ไม่สมบูรณ์

ซึ่งมักเรียกว่า การจับคู่แบบคลุมเครือ

วิธีที่ง่ายที่สุดในการดำเนินการจับคู่แบบคลุมเครือใน SAS คือการใช้ฟังก์ชัน SOUNDEX กับฟังก์ชัน COMPGED

ฟังก์ชันทั้งสองนี้ใช้เพื่อหาปริมาณความคล้ายคลึงกันระหว่างสตริง และสามารถใช้เพื่อ “จับคู่” สตริงที่คล้ายกันได้

ตัวอย่างต่อไปนี้แสดงวิธีการใช้ฟังก์ชันเหล่านี้เพื่อทำการจับคู่แบบคลุมเครือใน SAS

ตัวอย่าง: วิธีดำเนินการจับคู่แบบคลุมเครือใน SAS

สมมติว่าเรามีชุดข้อมูลต่อไปนี้ใน SAS ซึ่งมีข้อมูลเกี่ยวกับชื่อทีมและคะแนนของผู้เล่นบาสเกตบอลต่างๆ:

 /*create first dataset*/     
data data1;
  input team $points;
  datalines ;
Mavs 19
Nets 22
Kings 34
Warriors 19
Magic 32   
;
run ;
/*view dataset*/
proc print data =data1; 

และสมมติว่าเรามีชุดข้อมูลอื่นที่มีชื่อทีมและการช่วยเหลือของผู้เล่นบาสเก็ตบอลหลายคน:

 /*create second dataset*/     
data data2;
  input team $assists;
  datalines ;
Netts 8
Majick 7
Keengs 8
Warriors 12
Mavs 4    
;
run ;
/*view dataset*/
proc print data =data2; 

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

เราสามารถใช้ไวยากรณ์ต่อไปนี้ใน SAS เพื่อทำการจับคู่แบบคลุมเครือและนำชุดข้อมูลทั้งสองนี้มารวมกันตามชื่อทีมที่คล้ายกัน:

 /*use fuzzy matching to merge datasets based on similar team names*/
data data3;                                       
  setdata1 ;
  tmp1= soundex (team); /*encode team names from data1 */
  do i=1 to nobs;     
    set data2( rename =(team=team2)) point =i nobs =nobs;        
    tmp2= soundex (team2); /*encode team names from data2* /
    dif= compged (tmp1,tmp2); /*determine similarity between team names */
    if dif<=50 then do ;
      drop i tmp1 tmp2 dif; /*dr op unnecessary variables*/
      output ;
    end ;
  end ;
run ;

/*view resulting dataset*/
proc print data=data3; 

ตัวอย่างการจับคู่แบบคลุมเครือใน SAS

ฟังก์ชัน SOUNDEX และ COMPGED สามารถจับคู่ชื่อทีมตามความคล้ายคลึงกัน และสร้างชุดข้อมูลสุดท้ายที่รวมชุดข้อมูลทั้งสองเข้าด้วยกัน

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน SAS:

SAS: วิธีดำเนินการผสานแบบหนึ่งต่อกลุ่ม
SAS: วิธีใช้ (in=a) ในคำสั่งผสาน
SAS: จะผสานได้อย่างไรถ้า A ไม่ใช่ B

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

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