2013-06-01 48 views
6

欠損値をすべてSASでゼロに置き換えるにはどうすればよいですか?私はいくつかの地理データを処理するためにSASにダンプするテキストファイルを持っていますが、欠落している値があればそれは操作を中断します。各フィールドを指定せずにこれを変更する方法はありますか?SASの欠損値を置き換えます

data geo_cali_north; 
set geo_cali_north; 
if polar_data eq . then 0; 
if lat_xvar eq . then 0; 
run; 

私はすべてのフィールドのためにこれを行うことを避けることができますどのように私は私がそう

200を超える方法がありますか?

答えて

16

あなたはこのようにして0に欠落しているすべての値を設定することができます。これは、任意の数値を変換します

data myData; 
set myData; 
array a(*) _numeric_; 
do i=1 to dim(a); 
if a(i) = . then a(i) = 0; 
end; 
drop i; 

「」 0

+0

これは素晴らしい動作です!ありがとうございました! –

+1

問題はありません:)もしあなたが役に立つと分かっているのなら、upvotingとこの質問を受け入れることを検討してください。 – isJustMe

+2

私は少し修正を提案したいと思います。より良い解は、a [i] =合体(a [i]、0);それに加えて、特別なミス(.A .B .Zなど)のために働く。行方不明(MISSING関数もそうするでしょうが、これはやや早いと思います。)Coalesceは、値のリストから最初に間違った値を返します。 – Joe

7

別のオプションへ:

proc stdize data=mydata reponly missing=0 out=newdata; 
var _numeric_; 
run; 

あなたは、大規模なデータセットのためのdatastepオプションよりもおそらく速くをSAS/STATを持っている場合。

+0

この列のすべての値がない場合、これは機能しません。 – Lovnlust

関連する問題