在两个数据集没有共同变量的情况下,合并只有一行数据的dataset 和 包含多行数据的dataset。

比如,对一个数据集进行 proc means 计算,只有一行结果,此时想要计算原始数据和 proc means 结果的运算,则需要首先合并两个数据集。例子:

原始数据:

data test;
set sashelp.bmt(firstobs=1 obs=5);
run;

proc means data=test;
    var t;
    output out=summary sum=total;
run;
proc print data=summary; run;

 

 计算每一行和 total 的比值:

data test2;
    if _N_=1 then set summary;
    set test;
    pct = t/total * 100;
run;

上面语句中,SAS 会自动把通过 set statement 读进来的变量自动保留住 (类似retain),并且只把 data step 第一轮的值迭代保留(_N_=1),第一轮迭代的结果是:

 

 然后 retain 住这里 summary 变量的值,并继续读入 test 后续的 observations,最终结果是:

posted on 2022-10-02 21:25  MOZY  阅读(264)  评论(0编辑  收藏  举报