替换SAS中的缺失值

6 etl sas

如何用SAS中的零替换所有缺失值?我有一个文本文件,我转储到SAS处理一些地理数据,但每当它有一个缺失的值,它会打破操作.有没有办法在不指定每个字段的情况下改变它?我有200多个.

我这样做的方式是:

data geo_cali_north;
set geo_cali_north;
if polar_data eq . then 0;
if lat_xvar eq . then 0;
run;
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免为每个领域做到这一点?

isJ*_*tMe 16

您可以将所有缺失值设置为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 Code Online (Sandbox Code Playgroud)

这将转换任何数字"." 到0

  • 我建议稍作修改; 而不是`如果a(i)-....`更好的解决方案是`a [i] = coalesce(a [i],0);`; 除了之外,它还适用于特殊缺失(.A .B .Z等).失踪.(MISSING函数也会这样做,我相信这会更快一些.)Coalesce从值列表中返回第一个非缺失值. (2认同)

Joe*_*Joe 7

另外一个选项:

proc stdize data=mydata reponly missing=0 out=newdata;
var _numeric_;
run;
Run Code Online (Sandbox Code Playgroud)

如果您有SAS/STAT,可能比大数据集的datastep选项更快.