Заменить пропущенные значения в 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;

Как я могу избежать этого для каждой области?

Ответы на вопрос(2)

Другой вариант:

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

Если у вас есть SAS / STAT, возможно, быстрее, чем опция шага данных для больших наборов данных.

 Lovnlust02 июн. 2015 г., 09:17
Это нене работает, если все значения в этом столбце отсутствуют.
Решение Вопроса

Вы можете установить все недостающие значения в 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

 user244410802 июн. 2013 г., 00:05
Это прекрасно работает! благодарю вас!
 Joe02 июн. 2013 г., 02:36
буду предлагать небольшую модификацию; вместоif a(i)-.... лучшее решениеa[i]=coalesce(a[i],0);; это будет работать для специальных пропусков (.A .B .Z и т. д.) в дополнение к. отсутствует. (Функция MISSING также сделала бы это, я полагаю, это несколько быстрее.) Coalesce возвращает первое непропущенное значение из списка значений.
 isJustMe02 июн. 2013 г., 00:06
нет проблем :) если вы сочтете это полезным, рассмотрите возможность голосования и принятия этого вопроса, чтобы он оставался полезным для других пользователей.

Ваш ответ на вопрос