SAS Tip: Repeating AEBODSYS on New Page in PROC REPORT Output
HTML LIBNAME AD “G:\TA_ONCO_01_24122024\ADaM”; /*Macro for sorting purpose*/ %MACRO SORT(in= ,out= ,datacon= ,outcon= ,var= ,con= ); PROC SORT DATA=&in &datacon OUT=&out &outcon; BY &var; WHERE &con; RUN; %MEND SORT; %SORT (in=ad.adae ,out=ae ,var=usubjid aebodsys aedecod ,con= (TRTEMFL=”Y”) ,outcon=(keep=usubjid aebodsys aedecod ) ); %SORT (in=ad.adsl ,out=adsl ,var=usubjid ,con= (saffl=”Y”) ,outcon=(keep=usubjid ) ); DATA AE22; SET AE; IF aebodsys=’Gastrointestinal disorders’ THEN aedecod=STRIP(“x”)||STRIP(aedecod); RUN; DATA AE33; SET AE; IF aebodsys=’Gastrointestinal disorders’ THEN aedecod=STRIP(“xX”)||STRIP(aedecod); RUN; DATA AE; SET AE AE22 AE33; RUN; PROC SQL NOPRINT; SELECT COUNT(DISTINCT USUBJID) INTO :N separated by ” FROM adsl ; CREATE TABLE ae1 AS SELECT DISTINCT aebodsys , count(AEBODSYS) AS soc , count(DISTINCT USUBJID) AS n , CALCULATED n * 100 / INPUT (“&N”,BEST.) AS X , INPUT(PUT(CALCULATED X,5.1),BEST.) AS PCT , ( PUT(CALCULATED SOC,3.) ||” (“|| PUT(CALCULATED n ,4.) ||”, “|| PUT(CALCULATED X,4.1) ||”%) ” ) AS tabl FROM ae GROUP BY AEBODSYS OUTER UNION CORR SELECT DISTINCT aedecod , aebodsys , count(aedecod) AS SOC , count(DISTINCT USUBJID) AS n , CALCULATED n * 100 / INPUT (“&N”,BEST.) AS X , INPUT(PUT(CALCULATED X,5.1),BEST.) AS PCT , ( PUT(CALCULATED SOC,3.) ||” (“|| PUT(CALCULATED n ,4.) ||”, “|| PUT(CALCULATED X,4.1) ||”%) ” ) AS tabl FROM ae GROUP BY AEBODSYS , AEDECOD ORDER BY AEBODSYS , SOC DESC , AEDECOD; QUIT; %PUT &N ; DATA ae2; LENGTH NEW $100; SET ae1; by aebodsys descending soc aedecod ; IF AEDECOD EQ “” THEN NEW=AEBODSYS ; ELSE IF AEDECOD NE “” THEN NEW=” “||AEDECOD; RUN; DATA t_ae001; SET ae2; RUN; DATA ADAE2; SET t_ae001; by aebodsys descending soc aedecod ; RETAIN LNT PAG1 0; LNT+1; IF LNT >18 THEN DO; PAG1=PAG1+1; LNT=1; END; /* Show AEBODSYS only on first line of each page */ IF LNT = 1 THEN display_aebodsys = AEBODSYS; ELSE display_aebodsys = “”; LNT=LNT+1; RUN; DATA ADAE3; SET ADAE2; IF display_aebodsys NE ” AND display_aebodsys NE NEW; NEW=STRIP(AEBODSYS)||” (continue……….)”; LNT=1; RUN; DATA ADAE4; SET ADAE2 ADAE3; IF INDEX (NEW,”continue”)>0 THEN tabl=”; RUN; PROC SORT; BY PAG1 LNT aebodsys aedecod new tabl display_aebodsys; RUN; %INCLUDE “G:\TA_ONCO_01_24122024\Macro\RTF.SAS”; TITLE1 J=L “PHARMA Private Limited.”; TITLE2 J=L “Protocol: 043-1-2025”; TITLE3 J=C “Table 14.1.9 ANALYSES ON FOLLOW-UP TIME”; FOOTNOTE1 J=L “G:\TA_ONCO_01_24122024\PGM\L\T_14_1_9”; OPTION ORIENTATION=LANDSCAPE; ODS ESCAPECHAR=’^’; ODS RTF FILE=’G:\TA_ONCO_01_24122024\OUTPUTS\T_14_1_9.RTF’ STYLE=Styles.Test ; PROC REPORT DATA=ADAE4 NOWINDOWS SPLIT=’*’ HEADLINE HEADSKIP MISSING SPACING=2; COLUMN PAG1 aebodsys aedecod new tabl display_aebodsys; DEFINE PAG1 / ORDER NOPRINT; DEFINE aebodsys / ORDER NOPRINT order=DATA; DEFINE aedecod / ORDER NOPRINT order=DATA; DEFINE new / “MedDRA PRIMARY SYSTEM ORGAN CLASS* MedDRA Preferred Term * * *” STYLE(COLUMN)=[cellwidth=70% ASIS=ON] STYLE(HEADER)=[JUST=LEFT ASIS=ON]; DEFINE tabl / ” CDP870 400mg*Q2W Open – Label* (N = &N)* nAE (nPat; % Pat)” STYLE(COLUMN)=[cellwidth=29% ASIS=ON] STYLE(HEADER)=[JUST=LEFT ASIS=ON]; DEFINE display_aebodsys / NOPRINT; COMPUTE BEFORE _PAGE_; LINE@1 “^{STYLE[OUTPUTWIDTH=100% BORDERTOPWIDTH=0.5PT]}”; ENDCOMP; COMPUTE AFTER _PAGE_; LINE@1 “^{STYLE[OUTPUTWIDTH=100% BORDERTOPWIDTH=0.5PT]}”; ENDCOMP; BREAK AFTER PAG1 / PAGE; RUN; ODS _ALL_ CLOSE;
SAS Tip: Repeating AEBODSYS on New Page in PROC REPORT Output Read More »