Преобразование символьных переменных в числовые значения в SAS

У меня есть набор данных, состоящий из 60 переменных и 100 наблюдений. Наблюдения за каждым вопросом могут принимать один из следующих символов (a, b, c, d, e). Я хочу преобразовать их в числовые, поэтому я попытался использовать цикл Do, но по какой-то причине он не запускался. Вот мой код SAS:

DATA nXYZ;
set data XYZ;

array nQ {60} Q1-Q60;
do i = 1 to 60;

if Q[i] = 'a' then nQ[i] = 5;
else if Q[i] = 'b' then nQ[i] = 4;
else if Q[i] = 'c' then nQ[i] = 3;
else if Q[i] = 'd' then nQ[i] = 2;
else if Q[i] = 'e' then nQ[i] = 1;
end;

RUN;

Мне было интересно, что я сделал неправильно. Ваша помощь приветствуется.

1 ответ

Вы не можете изменить переменную символа на числовую переменную, по сути, без использования другого имени переменной. Вы могли бы сказать Q [i] = '5' (при условии, что вы правильно определили свои массивы), но вы не смогли бы получить Q [i], чтобы сохранить 5 как число, которое вы могли бы сделать математике. Если вы получили этот код, работая, добавив дополнительную ссылку на массив, это сработает, но оно назначит "5", а не 5.

Обходным путем является переименование переменных и преобразование переименованной переменной в правильное имя переменной. Это немного липкий, когда у вас их 60, но это возможно.

Основная концепция:

data nXYZ;
set xyz(rename=(Q1=cQ1 Q2=cQ2));
array cQs cq1-cq2;
array nQs q1-q2;
do _t = 1 to dim(nQs);
 nQs[_t] = 6-(rank(cQs)-96); *'a' = 97 .. 'z' = 122;
end;
run;

Вы можете создать этот список переименований программным способом.

licensed under cc by-sa 3.0 with attribution.