替换SAS中缺少的值

替换SAS中缺少的值,sas,etl,Sas,Etl,如何在SAS中将所有缺失的值替换为零?我有一个文本文件,我将其转储到SAS中以处理一些地理数据,但每当它缺少值时,就会中断操作。有没有办法在不指定每个字段的情况下对此进行更改?我有200多个 我这样做的方式是: data geo_cali_north; set geo_cali_north; if polar_data eq . then 0; if lat_xvar eq . then 0; run; 如何避免对每个字段执行此操作?您可以将所有缺少的值设置为0,如下所示: data myDa

如何在SAS中将所有缺失的值替换为零?我有一个文本文件,我将其转储到SAS中以处理一些地理数据,但每当它缺少值时,就会中断操作。有没有办法在不指定每个字段的情况下对此进行更改?我有200多个

我这样做的方式是:

data geo_cali_north;
set geo_cali_north;
if polar_data eq . then 0;
if lat_xvar eq . then 0;
run;

如何避免对每个字段执行此操作?

您可以将所有缺少的值设置为0,如下所示:

data myData;
set myData;
array a(*) _numeric_;
do i=1 to dim(a);
if a(i) = . then a(i) = 0;
end;
drop i;
这将把任何数字“.”转换为0

另一个选项:

proc stdize data=mydata reponly missing=0 out=newdata;
var _numeric_;
run;

如果你有SAS/STAT,可能比大数据集的DATASTEP选项快。

没有问题:如果你觉得它有用,请考虑支持和接受这个问题,这样它对其他用户仍然有用。我建议稍加修改;如果a(i)-…更好的解决方案是
a[i]=聚结(a[i],0),而不是
;除此之外,这还适用于特殊任务(.A.B.Z等)。丢失的(缺少的函数也可以做到这一点,我认为这要快一些。)Coalesce从值列表中返回第一个非缺值。