在查询构建器中运行Transpose后,我得到'。'对于空的领域。有没有办法避免这些'。' ?我可以通过添加一个case语句来删除下一步中的那些,但是这样做超过100列不是一个好主意。
123019 1 . . .
166584 . 1 . .
171198 . . 1 .
285703 . . . 1
309185 . . . 2
324756 . . . 1
335743 . . . .
348340 . . . .
请帮忙。
由于
答案 0 :(得分: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;
或者您可以运行所有步骤并将其添加到datastep的底部:
array a(*) _numeric_;
do i=1 to dim(a);
if a(i) = . then a(i) = 0;
end;
drop i; .
BTW这将取代。零,“。”表示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;
答案 1 :(得分:0)
Dot(缺失)与SAS中的“blank”相同。如果您实际打印出数据,则可以使用以下语句:
options missing=' '; *or 0 or any other character;
将显示缺少(空/空)值的值。在某些可能无法保留的上下文中,您可以使用数据步骤转换为零,或使用PROC STDIZE:
proc stdize data=mydataset missing=0 reponly;
run;
如果您已获得SAS / STAT许可,则可能更快/更容易编码。