1

在查询生成器中运行转置后,我得到“。” 对于空字段。有没有办法避免这些'。? 我可以通过添加 case 语句在下一步中删除这些内容,但对超过 100 列执行此操作并不是一个好主意。

123019  1   .   .   .
166584  .   1   .   .
171198  .   .   1   .
285703  .   .   .   1
309185  .   .   .   2
324756  .   .   .   1
335743  .   .   .   .
348340  .   .   .   .

请帮忙。

谢谢

4

2 回答 2

0

您可以使用以下代码:

data myData;
set myData;
array a(*) _numeric_;
do i=1 to dim(a);
if a(i) = . then a(i) = 0;
end;
drop i; 
run;

或者您可以运行所有步骤并将其添加到数据步骤的底部:

array a(*) _numeric_;
    do i=1 to dim(a);
    if a(i) = . then a(i) = 0;
    end;
    drop i; .

顺便说一句,这将取代 . 归零,“。” 表示 SAS 中的缺失值,您可以替换我为您要显示的任何其他值提供的代码上的 0,而不是.

编辑:鉴于您的输入,代码应如下所示:

PROC SORT DATA=ABC 
OUT=ABC1 ; 
BY EMP; 
RUN; 
PROC TRANSPOSE DATA=ABC1 OUT=ABC2 NAME=Source LABEL=Label; 
BY EM; 
ID VC; 
VAR FQ; 
/* ------------------------------------------------------------------- End of task code. ------------------------------------------------------------------- / 
RUN; QUIT; 

/* Start of custom user code. */
data ABC2;
set ABC2;
array a(*) _numeric_;
do i=1 to dim(a);
if a(i) = . then a(i) = 0;
end;
drop i; 
run;
于 2013-07-12T14:53:18.567 回答
0

点(缺失)与 SAS 中的“空白”相同。如果您实际上是在打印数据,则可以使用以下语句:

options missing=' '; *or 0 or any other character;

这将显示缺失(空/空白)值。在某些可能无法保留的上下文中,在这种情况下,您可以使用数据步骤转换为零,或者使用 PROC STDIZE:

proc stdize data=mydataset missing=0 reponly;
run;

如果您拥有 SAS/STAT 许可,这可能会更快/更容易编码。

于 2013-07-12T15:36:26.897 回答