Como realizar correspondência difusa em sas (com exemplo)


Freqüentemente, você pode querer unir dois conjuntos de dados no SAS com base em strings que correspondem de forma imperfeita.

Isso geralmente é chamado de correspondência difusa .

A maneira mais fácil de realizar correspondência difusa no SAS é usar a função SOUNDEX com a função COMPGED .

Essas duas funções são usadas para quantificar a semelhança entre strings e podem ser usadas para “corresponder” strings semelhantes.

O exemplo a seguir mostra como usar essas funções para realizar correspondência difusa no SAS.

Exemplo: como realizar correspondência difusa no SAS

Suponha que temos o seguinte conjunto de dados no SAS que contém informações sobre os nomes dos times e pontos de vários jogadores de basquete:

 /*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; 

E suponha que temos outro conjunto de dados com os nomes dos times e assistências de vários jogadores de basquete:

 /*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; 

Observe que muitos nomes de equipes neste conjunto de dados são semelhantes, mas não exatamente iguais aos nomes de equipes no conjunto de dados anterior.

Podemos usar a seguinte sintaxe no SAS para realizar uma correspondência difusa e reunir esses dois conjuntos de dados com base em nomes de equipes semelhantes:

 /*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; 

exemplo de correspondência difusa em SAS

As funções SOUNDEX e COMPGED são capazes de combinar nomes de equipes com base em sua semelhança e produzir um conjunto de dados final que mescla os dois conjuntos de dados.

Recursos adicionais

Os tutoriais a seguir explicam como executar outras tarefas comuns no SAS:

SAS: Como realizar uma mesclagem um-para-muitos
SAS: Como usar (in=a) na instrução merge
SAS: Como mesclar se A não for B

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *