Как выполнить нечеткое сопоставление в 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: Как объединиться, если А не есть Б

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *