2013-06-01 7 views
6

Как заменить все отсутствующие значения нулями в SAS? У меня есть текстовый файл, который я сбрасываю в SAS для обработки некоторых геоданных, но всякий раз, когда у него отсутствует значение, он прерывает операции. Есть ли способ изменить это без указания каждого поля? У меня есть более 200Заменить отсутствующие значения в SAS

Как мне сделать так:

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

Как я избегаю делать это для каждого поля?

ответ

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; 

Это будет конвертировать любой числовой «» к 0

+0

Это отлично работает! Спасибо! –

+1

без проблем :), если вы сочтете это полезным, рассмотрите вопрос о повышении и принятии этого вопроса, чтобы он оставался полезным для других пользователей. – isJustMe

+2

Я бы предложил небольшую модификацию; вместо 'if a (i) -....' лучшим решением является 'a [i] = coalesce (a [i], 0);'; который будет работать для специальных пропусков (.A .B .Z и т.п.) в дополнение к. отсутствует. (Функция MISSING также сделала бы это, это несколько быстрее, чем я полагаю.) Coalesce возвращает первое значение без пробела из списка значений. – Joe

7

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

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

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

+0

Это не работает, если все значения в этом столбце отсутствуют. – Lovnlust

Смежные вопросы