使用 format 语句对数据进行分组

你可以在过程中应用格式,例如更改 proc summaryproc freq 中的分组。

分组 SAS 日期

data example2 ;
  do Date = '01JUN2016'dt to '31AUG2016'dt ;
    Days = 1 ;
    output ;
  end ;
run ;

/* Summarise by year & month */
proc summary data=example2 nway ;
  class Date ;
  var Days ;
  output out=example2_sum (drop=_TYPE_ _FREQ_) sum= ;
  format Date yymmn6. ; /* e.g. 201606 */
run ;
日期
201606 三十
201607 31
201608 31
/* Summarise by month & year */
proc summary data=example2 nway ;
  class Date ;
  var Days ;
  output out=example2_sum2 (drop=_TYPE_ _FREQ_) sum= ;
  format Date monyy7. ; /* e.g. JUN2016 */
run ;
日期
JUN2016 三十
JUL2016 31
AUG2016 31

使用格式的好处是保留了自然排序顺序。

sashelp.class 为例,假设你要比较每个名字第一个字母的频率。你可以使用 substr() 函数查找第一个字母,并在新变量上运行 proc freq。或者,你可以将 $1. 格式应用于 Name 变量:

proc freq data=sashelp.class ;
  table Name ;
  format Name $1. ;
run ;
名称 计数
一个 7
B 4
C 2
等等