ワードパターンの前方一致の探し方は判りました。
余りスマートな方法ではありませんが中間一致も探せました。
後方一致はデータステップでどのように見つければよろしいのでしょうか?
2行目のレコードにのみ1を立てられれば正解なのですが。
data co;
coval='200%上昇'; output;
coval='100%'; output;
coval='%100'; output;
coval='200%'; output;
run;
data adco;
set co;
if coval=:'%' then anl01fn=1; *前方一致;
if index(coval,'%')>0 then anl02fn=1; *中間一致;
run;
ご教示のほど、よろしくお願いいたします。
コミュニティのご活用ありがとうございます。
蛇足ですが、KREVERSE関数を使って前方一致に帰着させるのもいいかなと思いました。
if left(kreverse(coval))=:'%' then anl03fn=1;
(2021/12/23追記)
以下、最初に回答した方法について、
変数covalに「50%~100%」のような値が想定される場合(検索対象の文字が複数出現する場合)は、後方一致ができないので、そのような値が想定される場合はyu_sasさんがご回答いただいている方法をご利用いただければと思います。
--- 以下、最初の回答 --------------------------------------------
こんにちは。
以下でどうでしょうか(これまたスマートではないかもしれませんが。。)
if coval^='' and kindex(coval,'%') = klength(coval) then anl02fn=1;
ちなみに変数値に日本語を含んでいたので、マルチバイト用のkindex、klength関数を使用しています。
amatsuさま
早速のご回答、誠に有難うございました。
sqlを使用したくなかったので、こちらの方法で十分でございます。
コミュニティのご活用ありがとうございます。
蛇足ですが、KREVERSE関数を使って前方一致に帰着させるのもいいかなと思いました。
if left(kreverse(coval))=:'%' then anl03fn=1;
yu_sasさま
ご回答、誠に有難うございました。
こちらの方法で問題なく抽出できました。
KREVERSE関数は、パスの一番下のフォルダ名を取得する時など
他の手段にも応用が利きそうで便利かと思いました。
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!