【发布时间】:2018-03-22 19:14:24
【问题描述】:
我正在尝试按 PROC SQL 中的自定义格式化变量进行分组,但到目前为止还没有找到解决方案。日志没有错误(如summary statistic error here)并且所有代码都有效。这是一个简单的例子:
DATA have;
INPUT value1;
DATALINES;
1.22
0.99
0.22
4.00
9.99
;
RUN;
PROC FORMAT;
value valuefmt
low-.99="Below $1.00"
1-5="$1-5.00"
5-high="Above $5.00";
RUN;
DATA have;
set have;
FORMAT value1 valuefmt.;
RUN;
PROC SQL;
SELECT count(*), value1 from have group by value1;
QUIT;
PROC SQL 返回按原始值 (value1) 分组的计数,而不是格式化值:
value1
~~~~~~~~~~~~~~~~~~~~~
1 Below $1.00
1 Below $1.00
1 $1-5.00
1 $1-5.00
1 Above $5.00
通过 FREQ 或 TABULATE 在 SAS 中允许使用此功能。示例:
PROC TABULATE data=have;
CLASS value1;
TABLE value1;
RUN;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| value1 |
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
|Below $1.00 | $1-5.00 |Above $5.00 |
|~~~~~~~~~~~~+~~~~~~~~~~~~+~~~~~~~~~~~~|
| N | N | N |
|~~~~~~~~~~~~+~~~~~~~~~~~~+~~~~~~~~~~~~|
| 2.00| 2.00| 1.00|
-~~~~~~~~~~~~-~~~~~~~~~~~~-~~~~~~~~~~~~-
关于如何使用 PROC SQL 执行类似操作的任何想法?
【问题讨论】: