Переменные SAS Macro Rename - PullRequest
       32

Переменные SAS Macro Rename

0 голосов
/ 20 октября 2018

У меня есть макрос, который я пытаюсь написать .... X1-X50

Но я хочу переименовать переменную в A1 A2 A3 A4 A5 B1 B2 B3 и так далее вплоть до E5.

X1 - X5 будет A1-A5 X6 - X10 будет B1 - B5 и т. Д.

Как переименовать переменные с помощью макроса в SAS?

1 Ответ

0 голосов
/ 21 октября 2018
  1. Создайте набор данных со старым именем и новым именем в двух столбцах

    data names;
    letter=64;
    counter=0;
    
    do i=1 to 50;
        counter=ifn(counter=5, 1, counter+1);
    
        if mod(i, 5)=1 then
            do;
                letter+1;
                letter_char=byte(letter);
            end;
        old=catt('X', put(i, 2. -l));
        new=catt(letter_char, counter);
        output;
    end;
    run;
    
  2. Создайте макропеременную со старыми и новыми именами вформа old = new, для всех переменных, то есть X1 = A1 X2 = A2 X6 = B1 ... и т. д.

    proc sql;
    select catx(' = ', old, new) into :rename_list separated by " "
    from names;
     quit;
    
  3. Применить оператор переименования в PROC DATASETS - это изменяет данные, но не выполняет полный проход данных.

    proc datasets lib=work;
    modify dataSetName;
    rename &rename_list.;
    run;quit;
    
...