SAS Proc means,将平均值存储为变量

SAS Proc means,将平均值存储为变量,sas,Sas,我需要找到两个平均值的比率,这是我使用proc means找到的 proc means data=a; class X Y; var x1 x2; run; 然后我得到变量x1和x2在X和Y两个类别中的输出平均值,但我感兴趣的是每个类别的x1/x2,手工操作并不是真正的解决方案 我不是一名专业程序员,所以我希望有一段简单的代码我能理解和使用。你需要预计算x1/x2或后计算x1/x2(取决于你是想要mean(x1/x2)还是mean(x1)/mean(x2),它们可以有不同的x1和x2答案,并有

我需要找到两个平均值的比率,这是我使用
proc means
找到的

proc means data=a;
class X Y;
var x1 x2;
run;
然后我得到变量
x1
x2
X
Y
两个类别中的输出平均值,但我感兴趣的是每个类别的
x1/x2
,手工操作并不是真正的解决方案


我不是一名专业程序员,所以我希望有一段简单的代码我能理解和使用。

你需要预计算x1/x2或后计算x1/x2(取决于你是想要
mean(x1/x2)
还是
mean(x1)/mean(x2)
,它们可以有不同的x1和x2答案,并有不同的响应数)

proc sql noprint;

    create table xy_ratio as /* New table name*/
    select distinct X, Y, avg(x1)/avg(x2) as x1_x2_ratio /* selects distinct rows containing variables listed here. (Must include group by variables) mean of x1 / mean of x2 to form ratio*/
    from a /*source dataset*/
    group by X, Y /*Similar to class statement, will provide an average for each distinct combination of X and Y that appear in the dataset*/
    ;
quit;
因此,要么(…意味着填写您已经拥有的内容)


多亏了你们两位,乔的解决方案工作得非常完美。
data premean;
set have;
x1x2 = x1/x2;
run;

proc means ... ;
class ... ;
var x1x2;
run;
proc means ...;
class ... ;
var x1 x2;
output out=postmeans mean=;
run;

data want;
set postmeans;
x1x2=x1/x2;
run;