Як виконати нечітку відповідність у 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *