両方とも文字列を置換する関数です。
TRANWRD( 対象変数or文字列 , 置き換えたい文字列 , 置き換え後の文字列 )
|
TRANSTRN( 対象変数or文字列 , 置き換えたい文字列 , 置き換え後の文字列 )
|
例1 ・・・ 文字列の置き換え
data OUT1;
length A B1 B2 $10.; A = "aabb"; B1 = tranwrd( A, "ab", "X" ); B2 = transtrn( A, "ab", "X" ); run;
|
例2 ・・・ 文字列の削除
data OUT2;
length A B1 B2 $10.; A = "abc"; B1 = tranwrd( A, "b", "" ); B2 = transtrn( A, "b", "" ); run;
|
削除した「b」の部分に半角スペースが残ってしまいます。(仕様っぽいです)
例3 ・・・ 文字列の削除
data OUT2;
length A B1 B2 $10.; A = "abc"; B1 = tranwrd( A, "b", trimn("") ); B2 = transtrn( A, "b", trimn("") ); run;
|
TRANSTRN関数の方は、trimn("") とすると文字列を削除すると同時に半角スペースも詰められます。
注意
SAS9.4のマニュアルを見ると、TRANWRD、TRANSTRN、TRIMN関数は日本語などのマルチバイト文字も対応していますが、それより前のバージョンでマルチバイト対応しているかは未確認なので、ご注意ください。
(関連記事 : 関数の落とし穴)
SAS社ホームページに「指定した文字列を削除する」というFAQがあります。
変数値から 「株式会社」 という文字列を削除したいというもので、
昔は、これだけの処理をするのも大変でしたが、今はTRANSTRN関数で一発解決です。
(しつこいようですが、SAS9.4での例になります。それより前のバージョンでは正しく動作するか未確認)
data out1;
length NAME NAME2 $50.; NAME = "(abcd株式会社)"; NAME2 = transtrn( NAME, "株式会社", trimn("") ); run;
|
0 件のコメント:
コメントを投稿