Jak wykonać dopasowanie rozmyte w sas-ie (z przykładem)
Często możesz chcieć połączyć dwa zestawy danych w SAS-ie w oparciu o niedoskonale pasujące ciągi znaków.
Nazywa się to często dopasowaniem rozmytym .
Najłatwiejszym sposobem przeprowadzenia dopasowania rozmytego w SAS-ie jest użycie funkcji SOUNDEX z funkcją COMPGED .
Te dwie funkcje służą do ilościowego określania podobieństwa między ciągami i można ich używać do „dopasowywania” podobnych ciągów.
Poniższy przykład pokazuje, jak używać tych funkcji do wykonywania dopasowywania rozmytego w SAS-ie.
Przykład: Jak wykonać dopasowanie rozmyte w SAS-ie
Załóżmy, że mamy następujący zbiór danych w SAS-ie, który zawiera informacje o nazwach drużyn i punktach różnych koszykarzy:
/*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;
Załóżmy, że mamy inny zbiór danych zawierający nazwy drużyn i asysty różnych koszykarzy:
/*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;
Należy pamiętać, że nazwy wielu zespołów w tym zbiorze danych są podobne, ale nie dokładnie takie same, jak nazwy zespołów w poprzednim zbiorze danych.
Możemy użyć następującej składni w SAS-ie, aby przeprowadzić dopasowanie rozmyte i połączyć te dwa zestawy danych w oparciu o podobne nazwy drużyn:
/*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;
Funkcje SOUNDEX i COMPGED potrafią dopasowywać nazwy zespołów na podstawie ich podobieństwa i tworzyć ostateczny zbiór danych, który łączy oba zbiory danych.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w SAS-ie:
SAS: Jak wykonać połączenie jeden do wielu
SAS: Jak używać (in=a) w instrukcji scalania
SAS: Jak połączyć, jeśli A nie jest B