如何从SAS日志中删除警告?

如何从SAS日志中删除警告?,sas,transpose,Sas,Transpose,我收到一个日志警告 警告:由于缺少ID值,忽略了21个观察值 我使用以下代码转换数据集: PROC TRANSPOSE DATA= PT OUT= PT; BY SOC_NM PT_NM; ID TREATMENT; VAR COUNT; RUN; 我想从日志中删除此警告。SAS中是否有此警告的可用选项 谢谢您的帮助。添加WHERE子句可以帮您完成这项工作吗 PROC TRANSPOSE DATA= PT OUT= PT; BY SOC_NM PT_NM;

我收到一个日志警告 警告:由于缺少ID值,忽略了21个观察值 我使用以下代码转换数据集:

PROC TRANSPOSE DATA= PT OUT= PT;
    BY SOC_NM PT_NM;
    ID TREATMENT;
    VAR COUNT;
RUN;
我想从日志中删除此警告。SAS中是否有此警告的可用选项


谢谢您的帮助。

添加WHERE子句可以帮您完成这项工作吗

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

添加WHERE子句对您有用吗

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

您需要决定是否保留
TREATMENT=''
记录。如果要保留它们,则需要为
TREATMENT
指定一个非缺失值。如果没有,那么像vasja的答案这样的WHERE语句将起作用。

您需要决定是否保留
治疗=''
记录。如果要保留它们,则需要为
TREATMENT
指定一个非缺失值。如果没有,那么WHERE语句(如vasja的答案)将起作用。

没有从日志中删除警告消息的选项。如果确实必须保持代码不变,则可以使用PROC PRINTTO将日志输出临时转移到外部文件。但是,这意味着您不会在日志中看到该特定步骤的任何内容,因此,除非您非常确定自己正在做什么,否则我不会推荐使用该步骤。查看下面的示例代码,您将看到日志中只显示创建表a和表c的步骤

data a;
run;

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

data c;
run;

没有从日志中删除警告消息的选项。如果确实必须保持代码不变,则可以使用PROC PRINTTO将日志输出临时转移到外部文件。但是,这意味着您不会在日志中看到该特定步骤的任何内容,因此,除非您非常确定自己正在做什么,否则我不会推荐使用该步骤。查看下面的示例代码,您将看到日志中只显示创建表a和表c的步骤

data a;
run;

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

data c;
run;

在转置之前,在数据步骤中添加此条件

if TREATMENT=. then TREATMENT=99;

在转置之后,
删除变量“_99”

在转置之前,在数据步骤中添加此条件

if TREATMENT=. then TREATMENT=99;

在转置之后,
也删除变量“_99”

——对输入和输出目标使用相同的数据集是一个非常糟糕的主意。第一次运行代码会起作用,但第二次运行代码会产生完全不同的结果,因为输入数据集是完全不同的。此外,对输入和输出目标使用相同的数据集是一个非常糟糕的主意。第一次运行代码会起作用,但是第二次运行代码会产生完全不同的结果,因为输入数据集是完全不同的。