如何在SAS中使用实数/数值作为变量?

如何在SAS中使用实数/数值作为变量?,sas,boxplot,sgplot,Sas,Boxplot,Sgplot,我想知道如何使用实数变量作为变量名。 比如说 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 1

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

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 transponse中使用var选择中的实际值,我得到了一个错误:syntax error。
我的预期输出是方框图,在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”用于区分带引号的字符串和名称文字值。
您可能还想更深入地了解该选项和。

不要将数据放入名称中。不要试图创建名为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
;

谢谢你,克米特。我希望得到类似的输出:。我用数值代替x1-x4。不幸的是,在x轴上,我看到的可能是近似值,而不是我在文章中提到的值,这使得很难理解图表。这在很大程度上违反了整洁的数据原则,并且由于某种原因不受支持……使用变量存储数据,然后根据需要引用它们。如果某个值发生更改,那么您需要更新所有代码来更改它。不幸的是,我有这些数据。我无法更改原始数据。如果您感兴趣,我提出了一个关于如何使用proc转置(或其他方法)操作表以获得特定输出的新问题。