如何控制SAS输出数据集中的小数点?

how to control decimal point in SAS output dataset?

我是 SAS 编程的新手,我正在尝试处理 proc means 语句。 为了控制输出中的十进制值,我使用了 maxdec 选项,但是当我尝试将新数据集分配给输出并打印它时,我的十进制值不受标准差控制。有人可以帮我弄清楚如何控制输出数据集中的小数点吗? 这是我使用的代码:

proc means data=sashelp.class maxdec=2 noprint;
var height weight;
output out=dsn2 Mean= Median= Min= Max= STD=/autoname;
run; 
proc print data=dsn2;
run;

MAXDEC 选项仅控制 PRINTOUT 的生成方式。

如果要控制打印数据集时使用的小数位数,则需要将格式附加到变量。要控制附加到 PROC MEANS 中变量的格式,请使用 FORMAT 语句。如果您将格式附加到分析变量,则相同的格式将附加到从该变量派生的任何统计数据。

因此您可以在 PROC MEANS 步骤中或在创建输入数据集时使用 FORMAT 语句。或者您可以稍后将格式附加到输出数据集中的变量,或者只是在 PROC PRINT 期间。

data class ;
  set sashelp.class;
  format height weight 6.2;
run;

proc means data=class maxdec=2 noprint;
  var height weight;
  output out=dsn2 Mean= Median= Min= Max= STD=/autoname;
run; 
proc contents data=dsn2 varnum; run;

结果

         Variables in Creation Order

 #    Variable         Type    Len    Format

 1    _TYPE_           Num       8
 2    _FREQ_           Num       8
 3    Height_Mean      Num       8    6.2
 4    Weight_Mean      Num       8    6.2
 5    Height_Median    Num       8    6.2
 6    Weight_Median    Num       8    6.2
 7    Height_Min       Num       8    6.2
 8    Weight_Min       Num       8    6.2
 9    Height_Max       Num       8    6.2
10    Weight_Max       Num       8    6.2
11    Height_StdDev    Num       8    6.2
12    Weight_StdDev    Num       8    6.2

请注意,PROC MEANS 甚至可以让您直接将格式附加到生成的统计变量,但您会收到有关在输入数据集中找不到变量的警告。

2693   proc means data=sashelp.class maxdec=2 noprint;
2694   var height weight;
2695   format height_mean weight 6.2 ;
WARNING: Variable HEIGHT_MEAN not found in data set SASHELP.CLASS.
2696   output out=dsn2 Mean= Median= Min= Max= STD=/autoname;
2697   run;