2013-07-01 87 views
1

我得到一個日誌警告,指出 警告:21個省略觀察由於缺少ID值 我正在使用此代碼調換數據集:如何從SAS日誌中刪除警告?

PROC TRANSPOSE DATA= PT OUT= PT; 
    BY SOC_NM PT_NM; 
    ID TREATMENT; 
    VAR COUNT; 
RUN; 

我想有刪除log.is此警告的任何選項可在此處獲得SAS

感謝您的幫助。

+1

而且 - 這是一個非常糟糕的主意,使用相同的數據集用於輸入和輸出目的地。運行代碼將會第一次運行,但第二次運行代碼會產生完全不同的結果,因爲輸入數據集完全不同。 –

回答

2

你需要決定是否要繼續使用TREATMENT=' '記錄或沒有。如果你想保留它們,那麼你需要爲TREATMENT指定一個非缺失值。如果不是,那麼WHERE語句就像vasja的回答會起作用。

2

將添加WHERE子句爲你做的工作?

PROC TRANSPOSE DATA= PT OUT= PT; 
    BY SOC_NM PT_NM; 
    ID TREATMENT; 
    VAR COUNT; 
    WHERE NOT MISSING(TREATMENT); 
RUN; 
0

無法從日誌中刪除警告消息。如果您確實必須保持代碼不變,那麼您可以使用PROC PRINTTO將日誌輸出臨時轉移到外部文件。但是,這意味着你不會在日誌中看到特定步驟的任何內容,所以除非你確定自己在做什麼,否則我不會推薦它。查看下面的示例代碼,您將看到只有創建表a和c的步驟纔會顯示在日誌中。

data a; 
run; 

proc printto log='c:\temp\temp.log'; 
run; 
data b; 
run; 
proc printto; 
run; 

data c; 
run; 
0

之前移調,在

if TREATMENT=. then TREATMENT=99; 

調換後的數據步驟中添加這種情況下,drop the variable "_99"