使用 format 语句对数据进行分组
你可以在过程中应用格式,例如更改 proc summary 或 proc 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 |
| 等等 |