データから、数値または文字だけを抽出する方法
[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関数には機能の追加はありません。 |