-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 selection 中的实际值时出现错误:语法错误。我的预期输出将是箱线图,在 x 轴上我有基于上述实际值的信息,在 y 轴上我有关于 y 的信息。

4

2 回答 2

2

不太确定您要实现什么,但是如果您想摆脱由于变量名而导致的语法错误,以下应该可以工作。

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=选项和SAS 语言中的名称

于 2021-03-17T19:30:39.220 回答
2

不要将数据放入名称中。不要尝试创建一个名为 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
;
于 2021-03-17T21:04:29.327 回答