如何在 SAS 中使用真实 numbers/numeric 值作为变量?

How to use real numbers/numeric values as variables in SAS?

我想知道如何使用实数变量作为变量名。 例如

data have;
input 
Y     0.133      0.124      0.1242    0.142 ;
datalines;
123  121     214     241   241
431  143     141     241   124
214  124     214     142   241
531  432     134     412   124
243  124     134     134   123
;

proc transpose data=have out=tall (rename=col1=x);
  by y notsorted;
  var /* what should I put here? */;
run;

ods html file='hbox-plot.html';

proc sgplot data=tall;
   hbox x / category=y;
   yaxis type=linear;
run;

ods html close;

尝试在 proc 转发器的 var 选择中使用实际值我收到错误:语法错误。 我的预期输出将是箱形图,其中 x 轴上的信息基于上面的实际值,而 y 轴上的信息是关于 y 的。

不太确定您要实现的目标,但如果您想消除由于变量名导致的语法错误,以下应该可行。

data have;
input 
Y "0.133"n "0.124"n "0.1242"n "0.142"n ;
datalines;
123  121     214     241   241
431  143     141     241   124
214  124     214     142   241
531  432     134     412   124
243  124     134     134   123
;

proc transpose data=have out=tall(rename=(col1=x _name_=var));
  by y notsorted;
  var "0.133"n "0.124"n "0.1242"n "0.142"n;
run;

字母“n”用于区分带引号的字符串和名称文字值。 您可能还想更深入地了解 VALIDMEMNAME= option and at Names in the SAS Language.

不要将数据放入名称中。不要尝试创建一个名为 0.133 的变量,而是将 0.133 的值放入一个变量中。

表示数据网格的另一种方法是使用三个变量对每个单元格进行一次观察。一个用于垂直索引,一个用于水平索引,第三个将值存储在两者交集的单元格中。

data have;
  input y @;
  do x=0.133,0.124,0.1242,0.142 ;
    input z @;
    output;
  end;
datalines;
123  121     214     241   241
431  143     141     241   124
214  124     214     142   241
531  432     134     412   124
243  124     134     134   123
;