在最终 Table 中也合并 Not Missing Observation 并转置最终输出

Merging the Not Missing Observation also in the final Table and transpose the final Output

我在 10 个不同的表中有 10 个不同的变量,其中包含 VARNAME 和 MISSING PERCENT。

在这 10 个中,假设有 5 个没有 "MISSING PERCENT",我想将这些观察结果包含在 0% 缺失中。现在,它在最终输出中消除了这个观察结果。

data Final_Output_All_Missing;
length VARNAME $ 30;

merge work.Final_Output_MOLD work.Final_output_tbm_stage2
work.final_output_article7 
 work.final_output_tbm_stage1 work.final_output_bladder 
work.final_output_batch_id;
by varname;
 keep VARNAME PERCENT;
run;

VARNAME              MISSING PERCENT

BLADDER               0.10
MOLD                  0.06
TBM_STAGE1            0.18
TBM_STAGE2            99.9   

其次,我已经合并了包含不同变量的不同表(0%还需要合并)如下图:

合并后,我想看到这种格式的输出。我可以使用这种格式吗?

         BLADDER      MOLD    TBM_STAGE1   TBM_STAGE2

1.       0.10%        0.06%     0.18%       99.9%

感谢您的帮助!

下面的代码将:

  • 用0替换缺失值(我在数据中添加了缺失值)
  • 添加百分比格式 xx.xx%
  • 转置数据

代码:

/*Create input data*/
data have;
informat VARNAME .;
input VARNAME $ MISSING_PERCENT  ;
length VARNAME ;
datalines;
BLADDER  0.10
MOLD 0.06
TBM_STAGE1 0.18
TBM_STAGE2 99.9
TBM_STAGE3  . 
TBM_STAGE4  . 
;;;;;;
run;
/*Replace missing values with 0, and Add % format */
proc sql;
create table work.new as 
select
VARNAME,
coalesce(MISSING_PERCENT,0)/100 as MISSING_PERCENT format=percent8.2
from work.have;
quit;
/*Transpose Data*/
proc transpose data=work.new
               out=work.want name=VARNAME;
               id VARNAME;
run;

输入:

格式化:

输出:

感谢您的回答。它完美地提供了我想要的东西。 但是,我确实有一个包含 160 个变量的列表,我认为对其进行硬编码会花费更多的精力。我所做的是排除了缺失百分比为 0% 的变量,并提取了缺失百分比的变量。

这就是我提取缺失百分比的方法:

> data Final_Output_&var;
                set Final_Output_&var;
                VARNAME = "&var";
            %if &t=char %then
                    %do;
                        where put (&var., $missfmt.) in ("Missing");
                    %end;
            %else
                    %do;
                        where put (&var., missfmt.) in ("Missing");
                    %end;
        run;

再次感谢您的快速回复!!! 最好的祝福, 潘卡吉