用于对变量进行排序的 SAS 代码 平均值从最高平均值到最低平均值

问题描述 投票:0回答:1

我无法执行 SAS 代码来对一组变量均值从最高到最低进行排序。

我已经获得了每个变量的均值,但我无法让 SAS 将变量从最高均值到最低均值排序。

我已经尝试过:

proc means data=stats std mean;  
var x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 x31 x32 x33 x34;
output out=summaryStats mean=MeanVar std=stdVar; run;

`Proc sort data=stats;`
`by descending MeanVar;`
`run;`

如何将均值转换为变量?或者我怎样才能从最高到最低排序?

statistics sas linear-regression sas-macro mlogit
1个回答
0
投票

如果我理解得很好,你有 34 个变量,

X1-X34
,你想按它们的方式对它们进行排序。您当前的代码会将所有 34 个均值放在同一条记录上,然后您可以通过数组循环遍历该记录。或者你可以这样做:

/* Transpose to long format (or use PROC TRANSPOSE) */
data tpose;
   set stats;
   array arr_x x:;
   do over arr_x;
      VARNUM = sum(VARNUM, 1);
      VARVAL = arr_x;
      output;
   end;
run;

proc sort data=tpose; by varnum; run;

proc means data=tpose mean std;
   by varnum;
   var varval;
   output out=summaryStats mean=meanVar std=stdVar;
run;

/* Put summaryStats VARNUM in order of highest to lowest mean. */
proc sort data=summaryStats; by descending meanVar; run;

如果您想按照变量的含义顺序重命名变量,那么就像反向转置此数据集一样简单。您还可以使用 CALL SORT 在单个数据步骤中完成所有这些操作,但它会更复杂一些,特别是如果您想包含其他统计数据,例如标准差。

© www.soinside.com 2019 - 2024. All rights reserved.