1

そのため、SAS には長さ 10 の character-type variable がありますfooword。私が達成したいのは、カスタムフォーマットが適用されたときです

format fooword $fooformat.;

ダッシュ記号は、2 つの記号ごとに (右から左に) 表示されます。つまり、 BERRYB-ER-RY のように見え、STRAWBERRYはST-RA-WB-ER-RY のように見えます。

確かに、新しい長い変数を作成し、たくさんのを使用してダッシュを追加できますsubstr()が、それは私の目にはひどい解決策のように見えます.

そう...

proc format;
    value $fooformat
    ???
    ;
run;
4

1 に答える 1

1

悲しいことに、フォーマットでは不可能です。FCMP 関数または正規表現で可能です。動作する可能性のある正規表現は次のようになります。

data test;
length origtext fintext $50;
input origtext $;
fintext=prxchange('s/([a-z]{2})(?=[a-z])/$1-/io',-1,origtext);
put origtext= fintext=;
datalines;
BLACKHOLES
GRAVITYWELL
DOREMIFASOLATI
;;;;
run;

2 つの英字を検索し、次に別の英字の肯定的な先読みを検索して (最後に 1 つをスローしないように)、同じものとダッシュに置き換えます。これを行うか、全体にダッシュを配置する文字列を単純に反復する FCMP 関数を作成できます。実際の詳細ではないにしても、使用方法の形式により似ています。

于 2013-10-20T04:37:38.567 に答える