Sas で prxmatch 関数を使用する方法 (例付き)
SAS でPRXMATCH関数を使用すると、文字列内の特定のパターンを検索し、パターンが見つかった位置を返すことができます。
この関数は次の基本構文を使用します。
PRXMATCH(正規表現、ソース)
金:
- 正規表現: 検索するパターンを指定する正規表現
- source : 検索する変数の名前
次の例は、SAS の次のデータセットで実際にこの関数を使用する 3 つの一般的な方法を示しています。
/*create dataset*/
data my_data;
input team $points;
datalines ;
Mavs 22
mavs 14
Warriors 23
Mavs 19
warriors 34
MAVS 40
WARRIORS 39
;
run ;
/*view dataset*/
proc print data =my_data;
例 1: PRXMATCH を使用して文字列内のパターンの位置を検索する
次のコードは、 PRXMATCH関数を使用して、チーム列内で文字列「avs」が表示される位置を含む、position という名前の新しい列を作成する方法を示しています。
/*create new dataset*/
data new_data;
set my_data;
position = prxmatch ("/avs/", team);
run ;
/*view new dataset*/
proc print data = new_data;
結果から次のことがわかります。
- 最初の行には、文字列の位置2から始まるチーム列のパターン「avs」が含まれています。
- 2 行目には、文字列のチーム列の開始位置2にパターン「avs」が含まれています。
- 3 行目にはチーム列に「avs」パターンが含まれていないため、値0が返されます。
等々。
例 2: PRXMATCH を使用して文字列にパターンが含まれているかどうかを確認する
次のコードは、 PRXMATCH関数を使用して、チーム列文字列の文字列のどこかに「avs」が含まれている場合は値1を含み、そうでない場合は値0を含むmavs_flagという新しい列を作成する方法を示しています。
/*create new dataset*/
data new_data;
set my_data;
if prxmatch("/Mavs/i", team) > 0 then mavs_flag = 1 ;
else mavs_flag = 0 ;
run ;
/*view new dataset*/
proc print data = new_data;
正規表現の末尾のi は、SAS が大文字と小文字を区別しない検索を実行することを指定していることに注意してください。
大文字と小文字を区別して検索したい場合は、 iを忘れてください。
例 3: PRXMATCH を使用して、パターンを含む行のデータセットをフィルターします。
次のコードは、 PRXMATCH関数を使用して、チーム列に文字列 “Mavs” (大文字と小文字を区別しない) を含むmy_dataの行のみを含む新しいデータセットを作成する方法を示しています。
/*create dataset*/
data original_doriginal_data;
新しいデータセットの各行のチーム列に「Mavs」が含まれていることに注目してください。
追加リソース
次のチュートリアルでは、SAS で他の一般的なタスクを実行する方法について説明します。
SAS で文字列から数値を抽出する方法
SAS の文字列からカンマを削除する方法
SAS で文字列を区切り文字で分割する方法