如何按照TFL模板给出的顺序出表或者QC
上篇文章介绍了当分类变量不全时,如何去填补。XTH,公众号:CDISC与SAS制作汇总表时不用dummy的方法,解决分类变量数据缺失-- proc means/ freq
这篇文章会介绍,当填补完,如何按照TFL模板给出的顺序出表或者QC。
方法一:proc format(生成format)和proc means
proc format;
value ...(notsorted)
…=…;
run;
notsorted:保留你当前定义的顺序。
proc means data=... noprint nway completetypes;
class … / preloadfmt order=data;
var ...;
output n=... out= ... ;
format ... ... ;
run;
order=data:当使用了PRELOADFMT,order=data会按照PROC FORMAT定义的顺序排列。
方法二:proc format(提取format数据集)和proc freq
proc format cnlout=dataset;
select @format
run;
使用@可以自动检索你想要的format,cnlout则输出成dataset。
sql join步骤
dataset当作dummy和分析数据集用proc sql join,
merge不推荐因为要考虑by后变量的length和name。
proc freq data= dataset noprint;
tables variable * variable / sparse out= dataset;
run;
缺点:
方法一:需要定义format顺序。
方法二:无法定义format顺序,需要制作dummy。
优点:因为在项目中提前做好的CT文档会生成我们需要的format,所以两种方法均无需定义format。(注意区分定义format和定义format顺序两者的区别)解决方法:
当定义format顺序时,可以复制TFL模板内容进excel(如A列),再利用公式进行填补修饰(如B列)。操作起来非常方便,省时,准确度高。如下图(也可以等于数值型的format,再生成排序变量)
另外,如果QC的时候,Source数据集可以自由排序再proc compare的话,则无需定义format顺序,可直接运用方法一的proc means,只不过需要仔细比对输出的output和模板的排列顺序。
而我司GDE建议不要在程序中单独使用proc format,并且要求QC数据集和模板顺序一致。尽管如此,也可以灵活运用EXCEL进行dummy的生成,再运用方法二。
总结,方法一和二会比传统生成dummy处理方法要快捷,其中EXCEL的灵活运用非常关键。