欠損値の置き換え_call stdizeバージョン

SAS忘備録で、データの標準化を行うSTDIZEプロシジャを利用して、欠損値を一気に指定の値に置換する方法が紹介されてました。
http://sas-boubi.blogspot.jp/2014/03/blog-post_20.html

これを読んだ時、あ、じゃあ同じことが call STDIZEルーチンでもできるんじゃない!
一回プロシジャステップ挟まなくても、データステップ中でできれば、そっちの方がいいな!と思って、挑戦したのですが、STDIZEプロシジャのreponlyに対応する記述法がわかんねぇ。

ヘルプにもそれらしきものは載ってないし、無理なの?と思って、放置していました。

最近、SAS Support Commnity(https://communities.sas.com/community/support-communities)をふらふらしてたら、いくつかヒントらしきものを見つけました。

それに従ってやってみたのが、以下のコードです。

まずはサンプルデータ

data DT1;
input A B C;
cards;
1 . 2
3 4 .
. . 5
run;







そして処理コード

data DT2;
  set DT1;
  call stdize('missing=',0,'none',of _all_);
run;

結果







おぉ!できたできた!


2 件のコメント:

  1. おーマジですか!!
    ’NONE’はマニュアルに載ってないですよね!
    わたしもこの方法さんざん調べたんですが分からなくて、もういいやって諦めてたので超スッキリしました。
    勉強になりました!

    返信削除
  2. マジです!
    のってないです!なんで載ってないのか、使っている外人は何故しっているのかって感じですね。
    発端はmatsuさんなので、こちらこそ勉強させていただきました。

    返信削除