Sas, как работать со столбцами, имя которых состоит из двух частей, первая такая же, а вторая другая - PullRequest
0 голосов
/ 13 июня 2018

У меня есть несколько столбцов в SAS, имя которых начинается с 100_Section_xxx.Итак, первая часть имени такая же, а вторая (xxx) другая.Я хочу написать условие для каждого столбца, например If 100_Section_xxx >1 then do error_100_Section_xxx ="yes" Как мне его написать, чтобы Sas взял вторую часть имени 100_Section_xxx и добавил xxx ко второй части имени столбца error_100_Section_xxx.

1 Ответ

0 голосов
/ 13 июня 2018

Это можно сделать с помощью простого шага макроса и данных с массивом:

Этот макрос циклически перебирает список имен (значения XXX) и перечисляет переменные, которые на нем заканчиваются.

%macro var_names(names, prefix=);
%local i n var;
%let n=%sysfunc(countw(&names));
%do i=1 to &n;
   %let var=%scan(&names,&i);
   &prefix.&var
%end;
%mend;

Теперь используйте это, шаг данных и 2 массива.

data have;
_100_Section_a = 1;
_100_Section_b = 0;
_100_Section_c = 10;
run;

data want;
set have;
array vars[*] %var_names(a b c, prefix=_100_Section_);

format %var_names(a b c, prefix=error_100_Section_) $8.;
array errors[*] %var_names(a b c, prefix=error_100_Section_);

do i=1 to dim(vars);
   if vars[i] > 1 then
      errors[i] = "yes";
end;

drop i;
run;

Обратите внимание, я добавил _ к именам переменных.Переменные SAS обычно не могут начинаться с цифры.

...