Условно изменить заголовки столбцов в отчете Proc в SAS - PullRequest
1 голос
/ 11 июля 2019

Можно ли условно изменить заголовки столбцов в отчете с помощью протокола proc в SAS?Я хотел бы изменить имена столбцов на основе групп данных в наборе данных.Пример: Давайте рассмотрим, есть 3 группы данных в моем наборе данных.Для первой группы я хотел бы, чтобы имена 3 переменных были A, B и C. Для второй группы я хотел бы, чтобы имена 3 переменных были D, E и F. Для третьей группы я хотел быимена трех переменных: X, Y и Z.

Спасибо

Я попытался установить временную переменную в отчете proc, используя блок вычисления, а затем использовать его в следующемвычислить блок для выполнения этой задачи.Тем не менее, я не могу использовать определение оператора в вычислительном блоке.Из-за этого недостатка мне не удалось.Ниже приведен код SAS, который я пробовал.

proc report data=x1 nowd headline headskip missing split="|" formchar(2)='_';
    column ("&undl." pg grp subgrp aedecod _65 _6574 _7584);

    define pg/order noprint;
    define grp/order noprint;
    define subgrp/order noprint;
    define aedecod/display "Preferred Term" width=55 left spacing=0 flow;

    compute before subgrp;
        temp=subgrp;
    endcomp;

    compute _65;
        if temp = "AB" then
        define _65/ display "Age <65| (N=&le65_1.)| __________________| n (%) [Events]" width=20 style(column) = [just=D] flow;
        if temp = "CD" then
        define _65/ display "Age <65| (N=&le65_2.)| __________________| n (%) [Events]" width=20 style(column) = [just=D] flow;
        if temp = "EF" then
        define _65/ display "Age <65| (N=&le65_3.)| __________________| n (%) [Events]" width=20 style(column) = [just=D] flow;
    endcomp;

    compute _6574;
        if temp = "AB" then
        define _6574/ display "Age 65-74| (N=&bt6574_1.)| __________________| n (%) [Events]" width=20 style(column) = [just=D] flow;
        if temp = "CD" then
        define _6574/ display "Age 65-74| (N=&bt6574_2.)| __________________| n (%) [Events]" width=20 style(column) = [just=D] flow;
        if temp = "EF" then
        define _6574/ display "Age 65-74| (N=&bt6574_3.)| __________________| n (%) [Events]" width=20 style(column) = [just=D] flow;
    endcomp;

    compute _7584;
        if temp = "AB" then
        define _7584/ display "Age 75-84| (N=&bt7584_1.)| __________________| n (%) [Events]" width=20 style(column) = [just=D] flow;
        if temp = "CD" then
        define _7584/ display "Age 75-84| (N=&bt7584_2.)| __________________| n (%) [Events]" width=20 style(column) = [just=D] flow;
        if temp = "EF" then 
        define _7584/ display "Age 75-84| (N=&bt7584_3.)| __________________| n (%) [Events]" width=20 style(column) = [just=D] flow;
    endcomp;

    break after pg/page;
    break after grp/skip;
    break after subgrp/page;

    compute before _page_;
        line @1 'Subgroup:' subgrp $122.;
    endcomp;

    compute after _page_;
        line @1 134*'_';
    endcomp;

run;

Пожалуйста, ознакомьтесь с кодом выше, который я использую.Как видите, есть три родительские подгруппы, AB, CD и EF.В этих трех родительских подгруппах есть еще 3 детские возрастные подгруппы: возраст <65, возраст 65-74 и возраст 75-84.Количество предметов (N) в каждой возрастной подгруппе (ребенке) будет меняться в зависимости от количества предметов в их родительских подгруппах, таких как AB, CD и EF.Мне интересно узнать, смогу ли я условно отразить это изменение N в выходных данных, используя протокол proc. </p>

...