125742 45 S211 M5 c4591001 A 1mth P adva s001 gmr ped ev eval sas

Pfizer Documents (PHMPT/FDA)

Pfizer Bla Submission

Pfizer 12 15 Documents

26

Document text

file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]***********************************************************************************************;
**  Program Name    :  adva-s001-gmr-ped-ev-eval.sas                                         **;**  Date Created    :  23Mar2021                                                             **;**  Programmer Name :                                                                 **;
**  Purpose         :  Create adva-s001-gmr-ped-ev-eval                                      **;**  Input data      :  adsl adva                                                             **;**  Output file     :  adva-s001-gmr-ped-ev-eval.html                                        **;***********************************************************************************************;options mprint mlogic symbolgen mprint symbolgen mlogic nocenter missing=" ";ods escapechar="~";
proc datasets library=WORK kill nolist nodetails;
quit;
**Setup the environment**;
%let prot=/Volumes/app/cdars/prod/sites/cdars4/prjC459/nda2_unblinded_esub/euaext_esub_adam/saseng/cdisc3_0;libname datvprot "&prot./data_vai" access=readonly;
%let outpath=&prot./analysis/esub;
%let outlog=&outpath./logs/adva-s001-gmr-ped-ev-eval.log;%let outtable=&outpath./output/adva-s001-gmr-ped-ev-eval.html;
******************************************************************************************;
* Clean *;******************************************************************************************;options mprint mlogic symbolgen;title;footnote;
proc delete data=work._all_;
run;
proc printto log="&outlog" new;
run;
proc format;
   value PARAMN 1="SARS-CoV-2 neutralization assay - NT50 (titer)";   value visx 1="1/Prevax" 6="2/1 Month";run;
data adsl;
   set datvprot.adsl;
   if trt01pn=8 and agegr4n=1 then
      trtprn=1;   else if trt01pn=8 and agegr4n=2 then      trtprn=2;   else if trt01pn=9 and agegr4n=1 then      trtprn=3;   else if trt01pn=9 and agegr4n=2 then      trtprn=4;   trtpr=trt01p;run;
(b) (4), (b) (6)
FDA-CBER-2022-5812-0073072
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]data adva;
   set datvprot.adva;
   if trt01pn=8 and agegr4n=1 then
      trtprn=1;   else if trt01pn=8 and agegr4n=2 then      trtprn=2;   else if trt01pn=9 and agegr4n=1 then      trtprn=3;   else if trt01pn=9 and agegr4n=2 then      trtprn=4;   trtpr=trt01p;run;
data _basetemplate(compress=no);
   length _varname $8 _cvalue $35 _direct $20 _vrlabel $200 _rwlabel       _colabel $800 _datatyp $5 _module $8 _pr_lbl $ 200;   array _c _character_;   delete;run;
data g_a_dsin;
   set adva;   analysis_subset='Y';run;
data g_adsl_dsin;
   set adsl;   where PEDIMMFL="Y" and HIVFL ne "Y";run;
data g_a_dsin;
   set g_a_dsin;   where avisitn le 6 and EVIMMFL eq 'Y' and paramn in (1) and avisitn>1 and       PEDIMMFL="Y" and EV1MD2FL="Y" and ANL01FL="Y";run;
proc sort data=g_adsl_dsin out=_ds1;
   by usubjid TRTPRN;run;
proc sort data=g_a_dsin out=_ds2;
   by usubjid TRTPRN;run;
data final_dsin;
   merge _ds1(in=d1) _ds2(in=d2);   by usubjid TRTPRN;
   if d1;
run;
data __trtmap;
FDA-CBER-2022-5812-0073073
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]   length trtcode trtdecd $100;
   if 0 then
      set g_adsl_dsin(keep=TRTPRN);   trtval=1;
   if vtype(TRTPRN)='C' then
      trtcode=tranwrd(compbl(quote("1")), ' ', '" "');   else      trtcode="1";   trtdecd="12-15 Years";   trtvar="TRTPRN";   trtlbl="TRTPR";   output;   trtval=2;
   if vtype(TRTPRN)='C' then
      trtcode=tranwrd(compbl(quote("2")), ' ', '" "');   else      trtcode="2";   trtdecd="16-25 Years";   trtvar="TRTPRN";   trtlbl="TRTPR";   output;   stop;run;
data g_dsin;
   set final_dsin;
   if TRTPRN in (1) then
      do;         newtrtn=1;         newtrt=coalescec("12-15 Years", TRTPR);         output;      end;
   if TRTPRN in (2) then
      do;         newtrtn=2;         newtrt=coalescec("16-25 Years", TRTPR);         output;      end;run;
proc sort data=g_dsin out=fmtdata1 (keep=PARAMN) nodupkey;
   by PARAMN;run;
proc sort data=g_dsin out=fmtdata2 (keep=AVISITN) nodupkey;
   by AVISITN;run;
data fin_dat1 (keep=usubjid newtrtn newtrt);
FDA-CBER-2022-5812-0073074
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]   set g_dsin (where=(newtrtn is not missing)) end=eof;
   if eof then
      output;run;
proc sql noprint;
   create table fin_dat2 as select * from (select * from fin_dat1) , (select *       from fmtdata1) , (select * from fmtdata2);quit;
proc sort data=fin_dat2;
   by usubjid newtrtn newtrt PARAMN AVISITN;run;
proc sort data=g_dsin out=tmp_gdsin;
   by usubjid newtrtn newtrt PARAMN AVISITN;run;
data FINAL;
   merge tmp_gdsin(in=a) fin_dat2(in=b);   by usubjid newtrtn newtrt PARAMN AVISITN;
   if ^a and b then
      _extrabyval=1;run;
data _data1;
   set final;   where (NEWTRTN is not missing) and avisitn le 6 and EVIMMFL eq 'Y' and paramn       in (1) and avisitn>1 and PEDIMMFL="Y" and EV1MD2FL="Y" and ANL01FL="Y";run;
proc sort data=_data1;
   by NEWTRTN USUBJID;run;
data _data1;
   retain _trt 0;   length _str $200;   _datasrt=1;   set _data1 end=eof;   by NEWTRTN USUBJID;   drop _str;   _str=' ';   _lastby=1;   _dummyby=0;
   if first.NEWTRTN then
      do;
         if not missing(NEWTRTN) then
            do;
               _trt=_trt + 1;
FDA-CBER-2022-5812-0073075
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]            end;
         _str=NEWTRT;
         if _trt > 0 then
            call symput('_trtlb'||compress(put(_trt, 4.)), trim(left(_str)));      end;run;
*----------------------------------------------------------------------;
* Generate a dataset containing all by-variables ;*----------------------------------------------------------------------;
proc sort data=_data1 out=_bydat1(keep=_datasrt PARAMN AVISITN _dummyby) 
      nodupkey;   by _datasrt PARAMN AVISITN;run;
data _bydat1;
   set _bydat1 end=eof;   by _datasrt PARAMN AVISITN;   retain _preby 0;   drop _preby;   length _bylab1-_bylab2 $100;   retain _byvar1-_byvar2 0 _bylen1-_bylen2 0 _bylab1-_bylab2;
   if first.PARAMN then
      do;         _byvar2=0;      end;
   if first.PARAMN then
      do;         _byvar1 + 1;         _bylab1=put(PARAMN, PARAMN.);         _bylen1=max(_bylen1, length(_bylab1));      end;
   if first.AVISITN then
      do;         _byvar2 + 1;         _bylab2=put(AVISITN, VISX.);         _bylen2=max(_bylen2, length(_bylab2));      end;   output;
   if last.AVISITN then
      do;
         if _byvar2 > _preby then
            _preby=_byvar2;         call symput("_prebyl", compress(put(_preby, 4.)));      end;
   if eof then
FDA-CBER-2022-5812-0073076
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]      do;
         call symput("_preby1", compress(put(_byvar1, 4.)));
         if 2=0 then
            output;      end;run;
data _bydat1;
   set _bydat1;   by _datasrt;   length _bycol _byindnt $50 _bylast $10;   _bycol="1 2 ";   _byindnt="0 0 ";   _bylast=" ";run;
proc sort data=_bydat1 out=_Byfrm2(keep=_datasrt AVISITN) nodupkey;
   by _datasrt AVISITN;run;
data _Byfrm2;
   set _byfrm2;   by _datasrt AVISITN;   retain _nwbyvar2 0;
   if first.AVISITN then
      do;         _nwbyvar2 + 1;      end;run;
proc sort data=_bydat1;
   by _datasrt AVISITN;run;
data _bydat1(drop=_nwbyvar2);
   merge _bydat1 _byfrm2;   by _datasrt AVISITN;   _byvar2=_nwbyvar2;run;
proc sort data=_bydat1;
   by _datasrt PARAMN AVISITN;run;
proc print data=_bydat1;
   title 'print of _bydat1';run;
proc sort data=_data1 out=_data1;
   by _datasrt PARAMN AVISITN;run;
FDA-CBER-2022-5812-0073077
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]*----------------------------------------------------------------------;
* Merge calculated by variables back into _DATAn dataset. ;
*----------------------------------------------------------------------;
data _data1;
   merge _bydat1(keep=_datasrt _byvar1 _byvar2 PARAMN AVISITN) _data1(in=_b);   by _datasrt PARAMN AVISITN;
   if _b;
run;
proc sort data=_data1;
   by _datasrt _byvar1 _byvar2;run;
data _tmpdata1;
   set _data1;   ;   output;run;
data _trtsubgrpframe;
   _cat=1;   _trt=1;   output;   _trt=2;   output;run;
proc sql noprint;
   create table _fullbyvar as select * from (select distinct _trt, _cat from       _trtsubgrpframe), (select distinct _byvar1, _byvar2 from _bydat1) order by       _trt, _byvar1, _byvar2;quit;
proc sql;
   create table _bydatn1 as select distinct _trt, _byvar1, count(distinct       USUBJID) as byvar1n from _tmpdata1 group by _trt, _byvar1;quit;
data _fullbyvar;
   merge _fullbyvar(in=a) _bydatn1;   by _trt _byvar1;
   if a;   if missing(byvar1n) then
      byvar1n=0;run;
proc sql;
   create table _bydatn12 as select distinct _trt, _byvar1, _byvar2,       count(distinct USUBJID) as byvar12n from _tmpdata1 group by _trt, _byvar1, 
      _byvar2;
FDA-CBER-2022-5812-0073078
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]quit;
data _fullbyvar;
   merge _fullbyvar(in=a) _bydatn12;   by _trt _byvar1 _byvar2;
   if a;   if missing(byvar12n) then
      byvar12n=0;run;
data _byvardata1;
   set _fullbyvar;
   if _trt=9999 then
      _trt=3;run;
proc sort data=_fullbyvar out=_bylab nodupkey;
   by _byvar1 _byvar2 _trt;run;
proc sort data=_bydat1 out=_byframe;
   by _byvar1 _byvar2;run;
data _bylabel1;
   merge _byframe(in=a) _bylab;   by _byvar1 _byvar2;
   if a;
run;
data _bylabel1(keep=_datasrt _trt _byvar1 _byvar2 _bylab1 byvar1n);
   set _bylabel1;   _bylab1=strip(_bylab1)||" (N="||strip(put(byvar1n, 5.))||")";run;
data _data12;
   set _data1;
   if aval>0 then
      do;         log_aval=log(aval);      end;run;
proc sort data=_data12;
   by _DATASRT _byvar1 _byvar2;run;
ods output ConfLimits=conf Equality=equal (keep=_DATASRT _byvar1 _byvar2 ProbF);
FDA-CBER-2022-5812-0073079
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]PROC TTEST DATA=_data12 plots=none;
   TITLE "T-test Example";
   by _DATASRT _byvar1 _byvar2;   class _trt;   VAR log_aval;RUN;
data conf1;
   set conf;   where method ~=' ';run;
data stat;
   merge conf1 equal;   by _DATASRT _byvar1 _byvar2;run;
data a1;
   set stat;   where (ProbF > 0.05 and method="Pooled") or (ProbF <=0.05 and       method="Satterthwaite");   geomean=exp(mean);   lcl=exp(lowerclmean);   ci="("||strip(put(exp(lowerclmean), 8.2))||", "||strip(put(exp(upperclmean),       8.2))||")";   format geomean 8.2;   keep _datasrt _byvar: geomean lcl ci;run;
data ttest;
   set a1;   _CVALUE8=strip(put(round(geomean, 0.01), 8.2)) ||'~-2n'||strip(ci);   labeln=1;   labelr=3;   output;
   if lcl>0.67 then
      _cvalue8="Y";   else      _cvalue8="N";   labeln=2;   labelr=4;   output;run;
proc sort;
   by _DATASRT _byvar1 _byvar2 labeln;run;
data _anal1;
   set _data1;   where _trt > 0;   _blcksrt=0;
   output;
FDA-CBER-2022-5812-0073080
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]run;
*----------------------------------------------------------------------;
* Make sure data is sorted by groups ;*----------------------------------------------------------------------;
proc sort data=_anal1;
   by _datasrt _byvar1 _byvar2 _blcksrt _trt;run;
*----------------------------------------------------------------------;
* Call PROC UNIVARIATE to generate all possible statistics plus any ;* Percentiles or Confidence Intervals. ;*----------------------------------------------------------------------;
proc univariate data=_anal1 noprint;
   by _datasrt _byvar1 _byvar2 _blcksrt _trt;   var AVAL;   output out=_msum1 N=N;run;
proc sort data=_anal1 out=_catby1(keep=_byvar1 _byvar2) nodupkey;
   by _byvar1 _byvar2;run;
data _frame1;
   set _catby1(keep=_byvar1 _byvar2);   _datasrt=1;   _blcksrt=0;   _catord=1;   _trt=1;   _cat=1;   output;   _trt=2;   _cat=1;   output;run;
proc sort data=_frame1;
   by _datasrt _byvar1 _byvar2 _blcksrt _trt;run;
data _msum1;
   merge _msum1 _frame1;   by _datasrt _byvar1 _byvar2 _blcksrt _trt;run;
*----------------------------------------------------------------------;
* Generate _result1 from OUT= dataset of PROC UNIVARIATE ;*----------------------------------------------------------------------;
data _result1_1;
   if 0 then
      set _basetemplate;
FDA-CBER-2022-5812-0073081
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]   set _msum1 end=eof;
   _rowsrt=0 + 1;
   _rwlabel="N ";   _cvalue=' ';   _nvalue=.;   _nvalue=N;
   if N ne . then
      _cValue=strip(put(N, 5.) );   else      _cValue=strip(put(0, 5.) );   output;run;
*-------------------------------------------------------------------------;
* Generate _logresult1 from OUT= dataset of PROC UNIVARIATE for log stats;*-------------------------------------------------------------------------;
data _logresult1_1;
   if 0 then      set _basetemplate;   stop;run;
*----------------------------------------------------------------------;
* Generate _result2 from confidence interval output dataset ;*----------------------------------------------------------------------;
data _result2_1;
   if 0 then      set _basetemplate;   stop;run;
*----------------------------------------------------------------------------;
* Generate _logresult2 from confidence interval output dataset for log stats;*----------------------------------------------------------------------------;
data _logresult2_1;
   if 0 then      set _basetemplate;   stop;run;
*----------------------------------------------------------------------;
* Combine to form one result dataset. Set variables that do not depend ;* on the statistic. Sort the result. ;*----------------------------------------------------------------------;
data _base1;
   set _result1_1 _result2_1 _logresult1_1 _logresult2_1;   ;
   if _trt=3 then
FDA-CBER-2022-5812-0073082
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]      _trt=9999;
   _varname="AVAL";
   _vrlabel=" ";   _datatyp='data';   _module='msumstat';   _indent=0;   _rowjump=1;   _dptindt=0;run;
*----------------------------------------------------------------------;
* merge ISAM subgroup variables _SUBCAT _COLABEL ;*----------------------------------------------------------------------;
proc sort data=_base1;
   by _datasrt _byvar1 _byvar2 _blcksrt _rowsrt;run;
*----------------------------------------------------------------------;
* Create the _ANALxx dataset for the use of later analysis. ;*----------------------------------------------------------------------;
data _anal2;
   set _data1;   where _trt > 0;   _blcksrt=0;   output;run;
*----------------------------------------------------------------------;
* Make sure data is sorted by groups ;*----------------------------------------------------------------------;
proc sort data=_anal2;
   by _datasrt _byvar1 _byvar2 _blcksrt _trt;run;
*----------------------------------------------------------------------;
* Call PROC UNIVARIATE to generate all possible statistics plus any ;* Percentiles or Confidence Intervals. ;*----------------------------------------------------------------------;
Data _anal2;
   set _anal2;
   if AVAL gt 0 then
      do;         _logvar=log10(AVAL);      end;run;
proc univariate data=_anal2 noprint;
   ;
   by _datasrt _byvar1 _byvar2 _blcksrt _trt;
FDA-CBER-2022-5812-0073083
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]   var _logvar;
   output out=_logmsum2 MEAN=MEAN;
run;
*---------------------------------------------------------------------;
*Create Frame dataset when user requested Subgrouping as well as set;*sparsesgrpyn to Y to sparse subgrp categories of a format.;*-----------------------------------------------------------------------;
proc sort data=_anal2 out=_catby2(keep=_byvar1 _byvar2) nodupkey;
   by _byvar1 _byvar2;   ;run;
data _frame2;
   set _catby2(keep=_byvar1 _byvar2);   _datasrt=1;   _blcksrt=0;   _catord=1;   _trt=1;   _cat=1;   output;   _trt=2;   _cat=1;   output;run;
proc sort data=_frame2;
   by _datasrt _byvar1 _byvar2 _blcksrt _trt;run;
data _logmsum2;
   merge _logmsum2 _frame2;   by _datasrt _byvar1 _byvar2 _blcksrt _trt;run;
*----------------------------------------------------------------------;
* Generate _result1 from OUT= dataset of PROC UNIVARIATE ;*----------------------------------------------------------------------;
data _result1_2;
   if 0 then      set _basetemplate;   stop;run;
*-------------------------------------------------------------------------;
* Generate _logresult1 from OUT= dataset of PROC UNIVARIATE for log stats;*-------------------------------------------------------------------------;
data _logresult1_2;
   if 0 then      set _basetemplate;
   set _logmsum2 end=eof;
FDA-CBER-2022-5812-0073084
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]   _rowsrt=1 + 1;
   _rwlabel="Geometric Mean ";
   _cvalue=' ';   _nvalue=.;
   if mean ne . then
      _cValue=strip(put(10 ** (mean), 9.1) );   else      _cValue="NE";   output;run;
*----------------------------------------------------------------------;
* Generate _result2 from confidence interval output dataset ;*----------------------------------------------------------------------;
data _result2_2;
   if 0 then      set _basetemplate;   stop;run;
*----------------------------------------------------------------------------;
* Generate _logresult2 from confidence interval output dataset for log stats;*----------------------------------------------------------------------------;
data _logresult2_2;
   if 0 then      set _basetemplate;   stop;run;
*----------------------------------------------------------------------;
* Combine to form one result dataset. Set variables that do not depend ;* on the statistic. Sort the result. ;*----------------------------------------------------------------------;
data _base2;
   set _result1_2 _result2_2 _logresult1_2 _logresult2_2;   ;
   if _trt=3 then
      _trt=9999;   _varname="AVAL";   _vrlabel=" ";   _datatyp='data';   _module='msumstat';   _indent=0;   _rowjump=1;   _dptindt=0;run;
*----------------------------------------------------------------------;
* merge ISAM subgroup variables _SUBCAT _COLABEL ;
FDA-CBER-2022-5812-0073085
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]*----------------------------------------------------------------------;
proc sort data=_base2;
   by _datasrt _byvar1 _byvar2 _blcksrt _rowsrt;run;
options MPRINT SYMBOLGEN MLOGIC;
;
data _base2;
   set _base2;   _cvalue2=_cvalue;run;
proc sort data=_base1 out=_ds1;
   by _datasrt _byvar1 _byvar2 _cat _trt;run;
proc sort data=_base2 out=_ds2;
   by _datasrt _byvar1 _byvar2 _cat _trt;run;
data _base2;
   merge _ds1(in=d1) _ds2(in=d2 keep=_datasrt _trt _cvalue2 _cat _byvar1 _byvar2);   by _datasrt _byvar1 _byvar2 _cat _trt;
   if d1;
run;
data _base1;
   set _base1;   delete;run;
*----------------------------------------------------------------------;
* Create the _ANALxx dataset for the use of later analysis. ;*----------------------------------------------------------------------;
data _anal3;
   set _data1;   where _trt > 0;   _blcksrt=0;   output;run;
*----------------------------------------------------------------------;
* Make sure data is sorted by groups ;*----------------------------------------------------------------------;
proc sort data=_anal3;
   by _datasrt _byvar1 _byvar2 _blcksrt _trt;run;
ods listing close;
FDA-CBER-2022-5812-0073086
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]Data _anal3;
   set _anal3;
   if AVAL gt 0 then
      do;         _logvar=log10(AVAL);      end;run;
proc univariate data=_anal3 cibasic(type=TWOSIDED alpha=0.05);
   by _datasrt _byvar1 _byvar2 _blcksrt _trt;   var _logvar;   ods output basicIntervals=_logmsumbi3;run;
ods listing;
*---------------------------------------------------------------------;*Create Frame dataset when user requested Subgrouping as well as set;*sparsesgrpyn to Y to sparse subgrp categories of a format.;*-----------------------------------------------------------------------;
proc sort data=_anal3 out=_catby3(keep=_byvar1 _byvar2) nodupkey;
   by _byvar1 _byvar2;   ;run;
data _frame3;
   set _catby3(keep=_byvar1 _byvar2);   _datasrt=1;   _blcksrt=0;   _catord=1;   _trt=1;   _cat=1;   output;   _trt=2;   _cat=1;   output;run;
proc sort data=_frame3;
   by _datasrt _byvar1 _byvar2 _blcksrt _trt;run;
proc sql;
   create table __frame3 as select distinct a.parameter, b.* from _frame3 b,       _logmsumbi3 a;quit;
proc sort data=__frame3;
   by _datasrt _byvar1 _byvar2 _blcksrt _trt parameter;run;
data _logmsumbi3;
FDA-CBER-2022-5812-0073087
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]   merge _logmsumbi3 __frame3;
   by _datasrt _byvar1 _byvar2 _blcksrt _trt parameter;
run;
*----------------------------------------------------------------------;
* Generate _result1 from OUT= dataset of PROC UNIVARIATE ;*----------------------------------------------------------------------;
data _result1_3;
   if 0 then      set _basetemplate;   stop;run;
*-------------------------------------------------------------------------;
* Generate _logresult1 from OUT= dataset of PROC UNIVARIATE for log stats;*-------------------------------------------------------------------------;
data _logresult1_3;
   if 0 then      set _basetemplate;   stop;run;
*----------------------------------------------------------------------;
* Generate _result2 from confidence interval output dataset ;*----------------------------------------------------------------------;
data _result2_3;
   if 0 then      set _basetemplate;   stop;run;
*----------------------------------------------------------------------------;
* Generate _logresult2 from confidence interval output dataset for log stats;*----------------------------------------------------------------------------;
data _logresult2_3;
   if 0 then      set _basetemplate;   set _logmsumbi3;   *----------------------------------------------------------------------;   * Recode PARAMETER variable to match keywords used by MSUMSTAT. ;   *----------------------------------------------------------------------;   parameter=upcase(parameter);
   if parameter=: 'MEAN' then
      parameter='MEAN_CI';   _rowsrt=2 + 1;   _rwlabel="95% Confidence|Interval of Geometric Mean ";   _cvalue=' ';   _nvalue=.;
   *----------------------------------------------------------------------;
FDA-CBER-2022-5812-0073088
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]   * GEOMEAN_CI ;
   *----------------------------------------------------------------------;
   if parameter='MEAN_CI' then
      do;
         if lowerCL ne . then
            _cValue=strip(put(10 ** (lowerCL), 9.1) );         else if lowerCL eq . then            _cValue="NE";
         if upperCL ne . then
            _cValue=strip(_cValue) || ', ' || strip(put(10 ** (upperCL), 9.1) );         else if upperCL eq . then            _cValue=strip(_cValue) || ', ' ||"NE";         _cValue='(' || strip(_cValue) || ')';         output;      end;run;
*----------------------------------------------------------------------;
* Combine to form one result dataset. Set variables that do not depend ;* on the statistic. Sort the result. ;*----------------------------------------------------------------------;
data _base3;
   set _result1_3 _result2_3 _logresult1_3 _logresult2_3;
   if _trt=3 then
      _trt=9999;   _varname="AVAL";   _vrlabel=" ";   _datatyp='data';   _module='msumstat';   _indent=0;   _rowjump=1;   _dptindt=0;run;
*----------------------------------------------------------------------;
* merge ISAM subgroup variables _SUBCAT _COLABEL ;*----------------------------------------------------------------------;
proc sort data=_base3;
   by _datasrt _byvar1 _byvar2 _blcksrt _rowsrt;run;
data _base3;
   set _base3;   _cvalue3=tranwrd(_cvalue, ", ", ",~{nbspace 1}");run;
proc sort data=_base2 out=_ds1;
   by _datasrt _byvar1 _byvar2 _cat _trt;
FDA-CBER-2022-5812-0073089
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]run;
proc sort data=_base3 out=_ds2;
   by _datasrt _byvar1 _byvar2 _cat _trt;run;
data _base3;
   merge _ds1(in=d1) _ds2(in=d2 keep=_datasrt _trt _cvalue3 _cat _byvar1 _byvar2);   by _datasrt _byvar1 _byvar2 _cat _trt;
   if d1;
run;
data _base2;
   set _base2;   delete;run;
data _final;
   set _base1 _base2 _base3;run;
proc sort data=_final;
   by _datasrt _byvar1 _byvar2 _blcksrt _rowsrt;run;
*----------------------------------------------------------------------;
* Collect BY-VARS ;*----------------------------------------------------------------------;
data _bydata;
   set _bydat1;
   if _byvar1=0 then
      delete;run;
proc sort data=_bydata;
   by _datasrt _byvar1 _byvar2;run;
data _final;
   merge _bydata _final(in=_b);   by _datasrt _byvar1 _byvar2;
   if _b;
run;
data _bylabeldata;
   set _bylabel1;run;
proc sort data=_bylabeldata;
   by _datasrt _trt _byvar1 _byvar2;
FDA-CBER-2022-5812-0073090
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]run;
proc sort data=_final;
   by _datasrt _trt _byvar1 _byvar2;run;
data _final;
   merge _final(in=_a) _bylabeldata(drop=_bylab1);   by _datasrt _trt _byvar1 _byvar2;
   if _a;
run;
*----------------------------------------------------------------------;
* Both TRT and Stats horizonal;*----------------------------------------------------------------------;
proc sql noprint;
   select max(_rowsrt) into :rowmax from _final where _datatyp='data';quit;
data _final;
   set _final;   drop __trt;
   if _datatyp='data' then
      do;
         if _trt=9999 then
            __trt=2 + 1;         else            __trt=_trt;
         if __trt > 1 then
            _column=_rowsrt + (__trt - 1) * 1;         else            _column=_rowsrt;         _proc_report_column=_rowsrt;      end;   _rowsrt=1;
   if _rwlabel ne ' ' then
      _colabel=translate(trim(_rwlabel), '^', ' ');   _rwlabel=' ';run;
proc sort data=_final out=_final;
   by _datasrt _byvar1 _byvar2 _blcksrt _rowsrt _column;run;
data _linecnt;
   set _final end=eof;   by _datasrt _byvar1 _byvar2 _blcksrt _rowsrt _column;
   retain _totline _maxval _maxrow _rwlbtag _vrlbtag 0 _maxline _linecnt;
FDA-CBER-2022-5812-0073091
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]   keep _datasrt _byvar1 _byvar2 _blcksrt _totline _linecnt _maxrow;
   if _rowjump=. then
      _rowjump=1;
   if first._blcksrt then
      do;         *----------------------------------------------------------------------;         * Count words inside DATA step ;         *----------------------------------------------------------------------;         _token=repeat(' ', 99);         _count=1;         _token=scan(_vrlabel, _count, "|");
         if _token=: '_' then
            _tag=1;         else            _tag=0;
         do while(_token ^=' ');
            _count=_count + 1;            _token=scan(_vrlabel, _count, "|");         end;         _linecnt=_count - 1 + _tag;         ;         _totline=_linecnt;
         if _vrlabel ne ' ' and _vrlabel ne '^' & _datatyp='data' then
            _vrlbtag=1;      end;
   if first._rowsrt then
      do;         *----------------------------------------------------------------------;         * Count words inside DATA step ;         *----------------------------------------------------------------------;         _token=repeat(' ', 99);         _count=1;         _token=scan(_rwlabel, _count, "|");
         if _token=: '_' then
            _tag=1;         else            _tag=0;
         do while(_token ^=' ');
            _maxrow=max(_maxrow, length(_token) + _indent);            _count=_count + 1;            _token=scan(_rwlabel, _count, "|");         end;         _maxline=_count - 1 + _tag;         ;
         if _rwlabel ne ' ' then
FDA-CBER-2022-5812-0073092
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]            _rwlbtag=1;
         _totline + _rowjump - 1;
      end;   *----------------------------------------------------------------------;   * Count words inside DATA step ;   *----------------------------------------------------------------------;   _token=repeat(' ', 99);   _count=1;   _token=scan(_cvalue, _count, "|");
   if _token=: '_' then
      _tag=1;   else      _tag=0;
   do while(_token ^=' ');
      _maxval=max(_maxval, length(_token));      _count=_count + 1;      _token=scan(_cvalue, _count, "|");   end;   _ccnt=_count - 1 + _tag;   ;   _maxline=max(_maxline, _ccnt);
   if last._rowsrt then
      _totline=_maxline + _totline;
   if last._blcksrt then
      do;         _totline=_totline - _rowjump + 1;
         if _vrlabel ne ' ' then
            _totline=_totline - 1;         output;      end;run;
data _final;
   length _direct $20;   _direct=' ';   merge _final _linecnt;   by _datasrt _byvar1 _byvar2 _blcksrt;run;
data _final;
   length _cvalue4 $100.;   set _final;   _cvalue4=strip(_cvalue2) ||'~-2n'||strip(_cvalue3);run;
proc sort data=_final out=_final_ods;
   by _trt _byvar1 _bylab1 _byvar2 _bylab2;run;
FDA-CBER-2022-5812-0073093
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]data _trt;
   attrib _trtlbl length=$50.;
   _trtn=1;   _trtlbl="12-15 Years";   output;   _trtn=2;   _trtlbl="16-25 Years";   output;run;
data _trt_fmt;
   set _trt;   by _trtn;   FMTNAME="TREAT";   call symputx('_trt'||strip(put(_trtn, best.)), _trtlbl, 'G');run;
data _trt_fmt(keep=fmtname _trtnum _trtlbl rename=(_trtnum=start 
      _trtlbl=label)) _trt_map(keep=_trtn _trtnum rename=(_trtn=_trt) );   set _trt_fmt;   by _trtn;   _trtnum=_N_;run;
proc format cntlin=work._trt_fmt noprint;
   select treat;run;
data _final;
   set _final_ods;run;
data outdata (drop=_trt rename=(_trtnum=_trt));
   merge _final _trt_map(in=a);   by _trt;
   if a;
   _fixvar=1;   _fix2var=1;   _dummy=1;run;
proc sort data=outdata;
   by _FIXVAR _FIX2VAR _DATASRT _byvar1 _bylab1 _byvar2 _bylab2 _BLCKSRT _ROWSRT       _TRT _DUMMY;run;
proc transpose data=outdata out=trans;
   by _FIXVAR _FIX2VAR _DATASRT _byvar1 _bylab1 _byvar2 _bylab2 _BLCKSRT _ROWSRT       _TRT _DUMMY;   var _CVALUE _cvalue4;run;
data trans;
FDA-CBER-2022-5812-0073094
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]   length label $100.;
   set trans;
   if upcase(_name_)="_CVALUE" then
      do;         labeln=1;         label="n~{super c}";      end;   else if upcase(_name_)="_CVALUE4" then      do;         labeln=2;         label="GMT~{super d} ~-2n (95%(*ESC*){nbspace 1}CI~{super d})";      end;run;
proc format;
   value par 1="n~{super b}"       2="GMT~{super c} ~-2n (95%(*ESC*){nbspace 1}CI~{super c})"       3="GMR~{super d} ~-2n (95%(*ESC*){nbspace 1}CI~{super d})"       4="Met Noninferiority Objective~{super e} ~-2n (Y/N)";run;
proc sort data=trans;
   by _FIXVAR _FIX2VAR _DATASRT _byvar1 _bylab1 _byvar2 _bylab2 _BLCKSRT _ROWSRT       labeln label _DUMMY;run;
proc transpose data=trans out=final prefix=TRT;
   by _FIXVAR _FIX2VAR _DATASRT _byvar1 _bylab1 _byvar2 _bylab2 _BLCKSRT _ROWSRT       labeln label _DUMMY;   id _trt;   var col1;run;
proc sort data=final;
   BY _DATASRT _byvar1 _byvar2 labeln;run;
data merg;
   merge final ttest;   BY _DATASRT _byvar1 _byvar2 labeln;run;
data final;
   set merg;run;
ods escapechar="~";
ods html file="&prot./analysis/esub/output/adva-s001-gmr-ped-ev-eval.html";title1 "Summary of Geometric Mean Ratio (*ESC*){Unicode 2013} NT50 (*ESC*){Unicode 2013}";title2 "Comparison of Subjects 12 Through 15 Years of Age to Subjects 16 Through 25 Years of Age (Immunogenicity Subset) (*ESC*){Unicode 2013}";title3 "Subjects Without Evidence of Infection up to 1 Month After Dose 2 (*ESC*){Unicode 2013} Dose 2 Evaluable 
Immunogenicity Population";
FDA-CBER-2022-5812-0073095
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]footnote1 "Abbreviations: GMR = geometric mean ratio; GMT = geometric mean titer; LLOQ = lower limit of 
quantitation;";
footnote2 "NT50 = 50% neutralizing titer; SARS-CoV-2 = severe acute respiratory syndrome coronavirus 2.";footnote3 "Note: Subjects who had no serological or virological evidence (up to 1 month after receipt of the last dose) of past SARS-CoV-2 infection (ie, N-binding antibody [serum] negative at Visit 1 and SARS-CoV-2 not detected by NAAT [nasal swab] at Visits 1 and 2), and had negative NAAT (nasal swab) at any unscheduled visit up to 1 month after Dose 2 were included in the analysis.";footnote4    "a.(*ESC*){nbspace 5}Protocol-specified timing for blood sample collection.";footnote5 "b.(*ESC*){nbspace 5}n = Number of subjects with valid and determinate assay results for the specified assay at the given dose/sampling time point.";footnote6 "c.(*ESC*){nbspace 5}GMTs and 2-sided 95% CIs were calculated by exponentiating the mean logarithm of the titers and the corresponding CIs (based on the Student t distribution). Assay results below the LLOQ were set to 0.5 ~{unicode 00D7} LLOQ.";footnote7 "d.(*ESC*){nbspace 5}GMRs and 2-sided 95% CIs were calculated by exponentiating the mean difference of the logarithms of the titers (Group 1 [12-15 years] (*ESC*){Unicode 2013} Group 2 [16-25 years]) and the corresponding  CI (based on the Student t distribution).";footnote8 "e.(*ESC*){nbspace 5}Noninferiority is declared if the lower bound of the 2-sided 95% CI for the GMR is greater than 0.67.";
proc report data=final nowd list missing nocompletecols contents="" split="|" 
      style(report)={} style(header)={} style(column)={};   COLUMN (_FIXVAR _FIX2VAR _DATASRT _byvar1 _bylab1 _byvar2 _bylab2 _BLCKSRT _ROWSRT ("~S={just=center}Vaccine Group (as Randomized) ~{line}" ("BNT162b2 (30 (*ESC*){unicode 03BC}g)~{line}" (trt1,       labeln) (trt2, labeln)) ) ("" ("" (_CVALUE8, labelr)) ) _DUMMY);   define _fixvar / group order=internal noprint;   define _fix2var / group order=internal noprint;   DEFINE _DATASRT / GROUP FORMAT=BEST9. WIDTH=9 SPACING=2 NOPRINT RIGHT       ORDER=INTERNAL "_DATASRT";   define _byvar1/ group order=internal noprint;   define _bylab1 / group order=internal "Assay"       style(column)={just=left}style(header)={just=left};   define _byvar2/ group order=internal noprint;   define _bylab2 / group order=internal "Dose/|Sampling|Time Point~{super a}"       style(column)={just=left}style(header)={just=left};   DEFINE _BLCKSRT / GROUP FORMAT=BEST9. WIDTH=9 SPACING=2 NOPRINT RIGHT       ORDER=INTERNAL;   DEFINE _ROWSRT / GROUP FORMAT=BEST9. WIDTH=9 SPACING=2 NOPRINT RIGHT       ORDER=INTERNAL;   DEFINE labeln / ACROSS WIDTH=25 format=par. SPACING=2 RIGHT ORDER=internal " ";   DEFINE labelr / ACROSS WIDTH=25 format=par. SPACING=2 RIGHT ORDER=internal " ";   DEFINE trt1 / GROUP FORMAT=$100. WIDTH=30 SPACING=2 NOZERO center       "12-15 Years";   DEFINE trt2 / GROUP FORMAT=$100. WIDTH=30 SPACING=2 NOZERO center       "16-25 Years";   DEFINE _CVALUE8 / GROUP FORMAT=$30. WIDTH=30 SPACING=2 NOZERO CENTER       "12-15 Years/16-25 Years";   DEFINE _DUMMY / SUM FORMAT=BEST9. WIDTH=9 SPACING=2 NOPRINT RIGHT "_DUMMY";   BREAK BEFORE _FIX2VAR /;   BREAK BEFORE _FIXVAR / PAGE CONTENTS="";   COMPUTE BEFORE _FIX2VAR;      line @1 ' ';   ENDCOMP;
RUN;
FDA-CBER-2022-5812-0073096
file:///J/...m5/datasets/c4591001/analysis/adam/programs-1mth/125742-45_S211_M5_c4591001-A_1mth-P-adva-s001-gmr-ped-ev-eval-sas.txt[7/5/2023 7:39:23 AM]ods HTML close;
proc printto;
run;
FDA-CBER-2022-5812-0073097