SAS SUBSTR

【SAS】SUBSTR関数は文字列から指定した文字数分切り取る。

投稿日:2022年4月25日 更新日:

今回はSUBSTR関数について解説します。


/* 正常形 */
data data1;
  id1="123456789";
    output;
run;


data data2; set data1;
  id2 = substr(id1, 1, 5);	
run;

  • substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
  • 開始位置は1スタート。

/* あいうえおかきくけこ */
data data1;
  id1="あいうえおかきくけこ";
    output;
run;


data data2; set data1;
  id2 = substr(id1, 1, 5);	
run;

  • substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
  • 開始位置は1スタート。
  • 日本語だと表示がおかしくなる。

/* 0, 5 */
data data1;
  id1="123456789";
    output;
run;


data data2; set data1;
  id2 = substr(id1, 0, 5);	
run;

  • substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
  • 開始位置は1スタート。
  • 第2引数に0を設定すると正しく処理されない。

/* 12, 17 */
data data1;
  id1="123456789";
    output;
run;


data data2; set data1;
  id2 = substr(id1, 12, 17);	
run;

  • substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
  • 開始位置は1スタート。
  • 第2引数に最大文字数より大きな値を入れると、id2は欠損値になる。

/* 1, 12 */
data data1;
  id1="123456789";
    output;
run;


data data2; set data1;
  id2 = substr(id1, 1, 12);	
run;

  • substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
  • 開始位置は1スタート。
  • 第3引数が最大文字数より大きくても正しく処理される。

/* 123456789 */
data data1;
  id1=123456789;
    output;
run;


data data2; set data1;
  id2 = substr(id1, 1, 5);	
run;

  • substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
  • 開始位置は1スタート。
  • id1が数値型だと正しく処理されない。

/* "1", "5" */
data data1;
  id1="123456789";
    output;
run;


data data2; set data1;
  id2 = substr(id1, "1", "5");	
run;

  • substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
  • 開始位置は1スタート。
  • 第2引数、第3引数が文字型でも正しく表示される。

/* 1.1, 5 */
data data1;
  id1="123456789";
    output;
run;


data data2; set data1;
  id2 = substr(id1, 1.1, 5);	
run;

  • substr関数は設定した字数分の文字列を切り取る。substr(カラム, 開始位置, 文字数)
  • 開始位置は1スタート。
  • 第2引数が1.1でも処理は通る。(1~5を取る。)

-SAS, SUBSTR

執筆者:


comment

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

関連記事

【SAS】PUTLOGステートメントは文字列をログに出力する。

今回はPUTLOGについて解説します。 /* putlog_1 */ data _null_; putlog ‘2022/03/26’; run; putlogにより、ログに文字列を出力できる。%pu …

【SAS】_NULL_は出力しないデータセット文を作るのに便利。

今回は_NULL_について解説します。 実は前回の記事で使用していた文法です。 【SAS】CALL SYMPUTは関数を用いてマクロ変数の代入ができる。 単元は分けた方が良いと思ったので、別記事として …

【SAS】%MACROはマクロを定義することができる。その4 引数違いの同名マクロは区別できない。【%MEND】

今回は引数違いの同名マクロについて解説していきたいと思います。(事前に読んでおきたい記事:【SAS】%MACROはマクロを定義することができる。その3 マクロには引数を設定できる。【%MEND】 | …

【SAS】FREQプロシージャは頻度集計とクロス集計をする その2【LIST】【CROSSLIST】【NOROW】【NOCOL】

今回はFREQプロシージャにオプションを用いた場合について解説します。  FREQプロシージャの基本的な使い方については過去記事で解説しています。⇒【SAS】FREQプロシージャは頻度集計とクロス集計 …

【SAS】INPUTは日付表記をSAS日付に変換できる

今回はINPUT関数を使って日付表記をSAS日付に変換する方法について解説します。  /* “2022/01/04” */ data data1; a = “2022/01/04”; b = …