В этой статье обсуждается чрезвычайно полезный метод, который позволяет выполнять операцию для всех числовых или символьных переменных в наборе данных SAS. Например, вы можете преобразовать все числовые переменные со значением 999 в переменные с отсутствующим значением, а все символьные переменные — в верхний регистр.
Чтобы продемонстрировать эти две задачи, сначала запустите указанную ниже программу, чтобы создать исходный набор данных. Этот набор данных содержит числовые значения 999 и некоторые символьные значения в нижнем или смешанном регистре:
Создание исходного набора данных
***Создаем исходный набор данных;
data Original;
input X Y A $ X1-X3 Z $;
datalines;
1 2 x 3 4 5 Y
2 999 y 999 1 999 J
999 999 R 999 999 999 X
1 2 yes 4 5 6 No
;
Ниже приведен исходный набор данных:
Список для исходного набора данных
В приведенной ниже программе выполняется поиск набора данных SAS для всех числовых значений, равных 999. Затем для этих данных устанавливаются отсутствующие значения. Программа также преобразует все символьные значения в верхний регистр.
Преобразование всех значений 999 в отсутствующие значения и всех символьных значений в верхний регистр
data New;
set Original;
array Nums[*] _numeric_;
array Chars[*] _character_;
do i = 1 to dim(Nums);
if Nums[i] = 999 then Nums[i] = .;
end;
do i = 1 to dim(Chars);
Chars[i] = upcase(Chars[i]);
end;
drop i;
run;
Для начала обработки используются два ключевых слова: _NUMERIC_ и _CHARACTER_ в операторах ARRAY. Когда эти ключевые слова используются на шаге DATA, они ссылаются на все текущие числовые или символьные переменные на шаге DATA. Обратите на это внимание. Если бы вы использовали два оператора ARRAY перед оператором SET, то два массива не содержали бы никаких переменных.
При определении двух массивов вы можете использовать звездочку (*) вместо количества элементов в массиве. Но поскольку вы не хотели подсчитывать количество числовых и символьных переменных в исходном наборе данных, вы используете функцию DIM ("размерность"), которая возвращает количество элементов в массиве. Затем это значение используется как верхний предел цикла DO.
Результат показан ниже:
Обратите внимание, что исходные значения 999 теперь отсутствуют, а все символьные значения преобразованы в верхний регистр. Используйте этот метод каждый раз, когда вам нужно выполнить операцию для всех числовых или символьных переменных в наборе данных SAS