2013-07-01 54 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"