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; 

SAS におけるあいまい一致の例

SOUNDEX関数とCOMPGED関数は、類似性に基づいてチーム名を照合し、2 つのデータセットをマージした最終データセットを生成できます。

追加リソース

次のチュートリアルでは、SAS で他の一般的なタスクを実行する方法について説明します。

SAS: 1 対多のマージを実行する方法
SAS: merge ステートメントで (in=a) を使用する方法
SAS: A が B ではない場合にマージする方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です