2017-04-07 73 views
0

對不起,我不知道如果有任何以前的問題要問這個問題。如果有,請告訴我鏈接:)SAS 9.4如何快速檢查所有的數據/變量

類似的問題,以檢查是否有缺失的值和'0'的缺失值。

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

,如果我要檢查所有的數據我不知道/變量爲正值:

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; 
    if _all_ <= 0 then ... = 0; 
    if _all_ > 0 then ... = 1; 
run; 

就是這樣。

+0

從代碼中得到的意外結果是什麼?是否將任何缺失值設置爲0或其他問題? – Quentin

+0

一些正值變爲零。 – user131605

回答

0

您的基本概念應該可行,但看起來語法不太正確。當你創建一個0,1標誌時,你可以簡化代碼如下(你不需要if,then,else語句)。

這會改變每個單獨的值。我不確定你的第二點意味着什麼,是否說所有的價值觀都是消極或積極的,然後改變它們?如果是這樣,這是所有行或列?

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