データから、数値または文字だけを抽出する方法
[OS] ALL
[リリース] SAS System 9以降
[キーワード] extraction, numeric, character, function, COMPRESS
[質問]
文字と数字が混在しているデータがあります。
[回答]これまでは、SCAN関数やSUBSTER関数などの利用で、特定の文字を抽出することなどが可能でしたが、SAS9からは、COMPRESS関数に追加された機能を利用することで、簡易に文字・数字のみを取り出すことが可能となりました。 次の例では、COMPRESS関数の3番目の引数に値を保持することを意味する「K」と、数値を表す「D」、および文字(アンダーバーと英字)を表す「F」を組み合わせて指定し、変数内の数値と文字を取り出しています。
使用例
/* テストデータ作成 */
DATA sample;
INPUT data1 $CHAR15.;
DATALINES;
2006 01 08 aaaaa
bbbb 2006-01-09
2006/01/10 cc
;
RUN;
DATA ext;
SET sample;
/* KD 数値を残す */
rc1 = COMPRESS(data1,,'KD');
/* KF 文字を残す */
rc2 = COMPRESS(data1,,'KF');
RUN;
PROC PRINT DATA=ext (KEEP=rc1 rc2);
RUN;
上記の使用例を実行すると、結果は以下のようになります。
OBS rc1 rc2
1 20060108 aaaa
2 20060109 bbbb
3 20060110 cc
COMPRESS関数の詳細は、以下のURLやオンライヘルプなどからご参照ください。
なお、COMPRESS関数の拡張は全角文字に対応していません。また、KCOMPRESS関数には機能の追加はありません。 |
|||||||