1

我收到一条日志警告,指出警告:由于缺少 ID 值而省略了 21 个观察我正在使用此代码转置数据集:

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

我想从日志中删除这个警告。SAS 中有没有可用的选项

谢谢你的帮助。

4

4 回答 4

2

添加 WHERE 子句会为您完成这项工作吗?

PROC TRANSPOSE DATA= PT OUT= PT;
    BY SOC_NM PT_NM;
    ID TREATMENT;
    VAR COUNT;
    WHERE NOT MISSING(TREATMENT);
RUN;
于 2013-07-01T11:22:35.177 回答
2

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

于 2013-07-01T13:35:40.587 回答
1

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

if TREATMENT=. then TREATMENT=99;

转置后,drop the variable "_99"

于 2015-02-27T16:19:00.153 回答
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;
于 2013-07-01T15:47:58.510 回答