2017-04-07 7 views
0

これまでの質問があれば、この問題を尋ねることはできません。もし存在すれば、私にリンクを教えてください:)SAS 9.4すべてのデータ/変数を素早くチェックする方法

欠けている値があるかどうかをチェックし、欠損値に「0」を入れる質問に似ています。

data new; 
    set old; 
    array change _numeric_; 
    do over change; 
    if change <= 0 then change = 0; 
    if change > 0 then change = 1; 
    end; 
run; 

しかし、それは私が期待したもの行いません:私は、すべてのデータをチェックしたい場合、私は疑問に思って

data new; 
    set old; 
    array change _numeric_; 
    do over change; 
    if change = . then change = 0; 
    end; 
run; 

は/変数が正かではありません。私に何ができる?

そして、すべてのデータ/変数を素早く表現する方法があると思っています。すなわち

data new; 
    set old; 
    if _all_ <= 0 then ... = 0; 
    if _all_ > 0 then ... = 1; 
run; 

このようなものです。

+0

コードから予期しない結果が得られますか?欠損値が0に設定されていますか、その他の問題がありますか? – Quentin

+0

いくつかの正の値がゼロになりました。 – user131605

答えて

0

基本的な考え方はうまくいくはずですが、構文が正しくないように見えます。 0,1フラグを作成するときは、次のようにコードを単純化することができます(ifthenelseステートメントは不要です)。

これにより、個々の値が変更されます。私はあなたの2番目のポイントが意味することを正確にはわかりません、すべての値が負であるか正であるならばそれを変更すると言っていますか?もしそうなら、これはすべて行または列に入っていますか?

data old; 
input a b c; 
datalines; 
-2 3 0 
3 5 9 
1 0 -5 
4 7 -8 
; 
run; 

data new; 
set old; 
array change{*} _numeric_; 
do i = 1 to dim(change); 
    change{i} = change{i}>0; 
end; 
drop i; 
run; 
+0

欠損値がある場合、この方法では、負の値とともに0に再コード化されます。 – Quentin

関連する問題