文字列に含まれる特定の文字の数を求める

[OS] ALL
[リリース] ALL
[キーワード] Base、count、COUNT function

[質問]

ある文字列に含まれる、特定の文字の数を求めるプログラムを記述しようとしています。
たとえば、文字列「03-XXXX-XXXX」に含まれている「 - 」の数を求めるには、どのように記述すればよいですか。

[回答]

SAS 9.1以降では、COUNT関数を使用して特定の文字の数を求められます。
SAS 8.2以前では、LENGTH関数とCOMPRESS関数を使用して求められます。

下記にそれぞれの例を示しますので、ご参照ください。

サンプルデータセットの作成


   data sample;
     length text $ 20;
     input text $;
   cards;
   XX-XXXX-XXXX
   XXXX-XXXX
   XXXX
   ;
   run;

■ SAS 9.1以降

   data sample;
     set sample;
     cnt=count(text,'-');            /* COUNT関数 */
       put cnt=;
   run;

■ SAS 8.2以前

   data sample;
     set sample;
                      /* 検索する文字列に1文字追加 */
     _text = '09'x || text;
                               /* 文字数のカウント */
     cnt=length(_text) - length(compress(_text,'-'));
     put cnt=;
   run;