Sas でファジーマッチングを実行する方法 (例付き)
多くの場合、不完全に一致する文字列に基づいて SAS 内の 2 つのデータセットを結合したい場合があります。
これは、多くの場合、ファジーマッチングと呼ばれます。
SAS であいまい一致を実行する最も簡単な方法は、 SOUNDEX関数をCOMPGED関数とともに使用することです。
これら 2 つの関数は、文字列間の類似性を定量化するために使用され、類似した文字列を「照合」するために使用できます。
次の例は、これらの関数を使用して 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 で次の構文を使用すると、あいまい一致を実行し、類似したチーム名に基づいてこれら 2 つのデータ セットを結合できます。
/*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;
SOUNDEX関数とCOMPGED関数は、類似性に基づいてチーム名を照合し、2 つのデータセットをマージした最終データセットを生成できます。
追加リソース
次のチュートリアルでは、SAS で他の一般的なタスクを実行する方法について説明します。
SAS: 1 対多のマージを実行する方法
SAS: merge ステートメントで (in=a) を使用する方法
SAS: A が B ではない場合にマージする方法