見出し画像

SASのいろいろ8 -verifyを使用した文字変数の中の確認-

W.Hです。今回はverifyを使用して文字変数の中の確認をします。
文字変数の中が数字だけなのか確認したいときなどがありますが、SASには「変数名 is
NUMERIC」のような確認方法がありません。
そのため、「verify」を使用して数字かどうかの確認をします。


①verifyを使用した数字の確認。

data xxx;
input NUM val $3.;
cards;
1 001
2
3 679
4 aaa
5 5.3
;
run;


data a1;
set xxx;
val2 = verify(val, "0123456789");
run;


※verifyの()内の数字があった場合は0、違う数字や文字が出た場合は変数内の文字の何番目に出たかを返します。

②verifyは数字以外の確認もできる。

data xxx;
input NUM val $3.;
cards;
1 001
2
3 679
4 aaa
5 5.3
;
run;
data a2;
set xxx;
val2 = verify(val, "0123456789a .");
run;


※verifyの()内に「aとスペースと.」を追記する。
val2の値に全て0が返って来る。

③全角が入っているデータセットを使用する場合はverifyの前にkを付ける(kverifyにする)。

data zzz;
input NUM val $6.;
cards;
1 ををを
2 あをん
3 679
4 aaa
5 5.3
;
run;
data a3;
set zzz;
val2 = kverify(val, "0123456789a .あを");
run;

※verifyの前にKを付けてkverifyにすることで全角の確認をすることができる。

④全角がなくてもkverifyを使用できる。

data xxx;
input NUM val $3.;
cards;
1 001
2
3 679
4 aaa
5 5.3
;
run;
data a4;
set xxx;
val2 = kverify(val, "0123456789");
run;

⑤lengthが長い場合はverifyの中にスペースを入れるか、変数内のスペースを削除する。

data xxx;
input NUM val $20.;
cards;
1 001
2
3 679
4 aaa
5 5.3
;
run; 
data a5;
set xxx;
val2 = kverify(val, "0123456789");
val3 = kverify(val, "0123456789 ");
val4 = kverify(strip(val), "0123456789");
val5 = kverify(compress(val), "0123456789");
run;
  • val2は変数内に空白が入っている状態なので全てに値が返ってくる。

  • val3はverifyの中に"0123456789 "←スペースを入れることで、数字とスペースは値を返さないようにしている。

  • val4、val5は変数内のスペースを削除している。(stripは変数内の前後のスペースを削除、compressは変数内のスペースを削除する)


ここまでお読みいただき、ありがとうございました!
この記事が少しでも参考になりましたら「スキ」を押していただけると幸いです!

株式会社分析屋について

弊社が作成を行いました分析レポートを、鎌倉市観光協会様HPに掲載いただきました。

ホームページはこちら。

noteでの会社紹介記事はこちら。

【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!
【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。
【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。
【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。
【SES】
SESサービスも行っております。