Sas: find と index の違い
SAS でFIND関数とINDEX関数を使用すると、文字列内に出現する部分文字列の最初の文字の位置を返すことができます。
これらの関数の違いは、 FIND関数では、 INDEX関数ではできない次の 2 つのことができることです。
- FIND を使用すると、大文字と小文字を区別しない検索を実行できます。
- FIND を使用すると、検索の開始位置を指定できます。
次の例は、文列を含む SAS の次のデータセットを使用した実際のFIND関数とINDEX関数の違いを示しています。
/*create dataset*/
data original_data;
input sentence $40. ;
datalines ;
A pig is my favorite animal
My name is piglet
Pigs are so cute
Here is a baby pig
His name is piggy
;
run ;
/*view dataset*/
proc print data = original_data;
例 1: FIND と INDEX を違いなく使用する
次のコードは、 FIND 関数とINDEX関数を使用して、式列内で部分文字列「pig」が最初に出現する位置を検索する方法を示しています。
/*find position of first occurrence of 'pig' in phrase column*/
data new_data;
set original_data;
find_pig = find (phrase, 'pig');
index_pig = index (phrase, 'pig');
run ;
/*view results*/
proc print data = new_data;
FIND関数とINDEX関数はまったく同じ結果を返すことに注意してください。
find_pig列とindex_pig列 フレーズ列内で部分文字列「pig」が最初に出現する位置を表示します。
例 2: 大文字と小文字を区別しない検索での FIND および INDEX の使用
次のコードは、 FIND 関数とINDEX関数を使用して、式列内で単語「PIG」が最初に出現する位置を検索する方法を示しています。
/*find position of first occurrence of 'PIG' in phrase column*/
data new_data;
set original_data;
find_pig = find (phrase, 'PIG', 'i');
index_pig = index (phrase, 'PIG');
run ;
/*view results*/
proc print data =new_data;
FIND関数で「i」修飾子を使用すると、フレーズ列内の「PIG」部分文字列の大文字と小文字を区別しない検索を実行できました。
ただし、 INDEX関数は大文字と小文字を区別しない検索を実行できないため、どの文にも大文字の部分文字列「PIG」が存在しないため、単純に各行に0を返します。
例 3: 特定の開始位置を指定した FIND および INDEX の使用
次のコードは、 INDEX関数が特定の開始位置をまったく使用できない一方で、 FIND関数を使用してフレーズ列の位置 5 から始まる部分文字列「pig」を検索する方法を示しています。
/*find position of first occurrence of 'pig' in phrase column starting at position 5*/
data new_data;
set original_data;
find_pig = find (phrase, 'pig', 5 );
index_pig = index (phrase, 'pig');
run ;
/*view results*/
proc print data = new_data;
find_pig関数は、フレーズ列の位置 5 から始まる部分文字列「pig」を検索します。
Index_pig関数は、検索の開始位置を指定できないため、 phrase列内の任意の場所で「pig」部分文字列を検索するだけです。
追加リソース
次のチュートリアルでは、SAS の他の一般的な関数の使用方法について説明します。
SAS で SUBSTR 関数を使用する方法
SAS で COMPRESS 機能を使用する方法
SAS での COALESCE 機能の使用方法