指定数据输出格式;
不会改变变量值,只是按照指定格式显示。
一般格式:
format 变量1 格式1 变量2 格式2……;
字符型变量的输出格式:$w.(与输入格式一样);
数值型变量的输出格式:w.d、commaw.d(将数值的整数部分自右向左每三位用逗号隔开,其中w包括逗号和小数点)、percentw.d(将数据显示百分比的格式,自动将变量乘以100,并加上%。其中w包括%,%为3个字节)。
/*控制字符型变量的输出格式,复制sashelp逻辑库下的class数据集,使姓名变量只展示前三个英文字母*/
data a;
set sashelp.class;
format name $3.;
run;
/*控制数值型变量的输出格式,复制sashelp逻辑库下的class数据集,使体重展示为有两位小数的格式*/
data b;
set sashelp.class;
format weight 6.2;
run;
/*数值型输出格式展示*/
proc import datafile='D:\test\num.xlsx' out=num dbms=xlsx replace;
sheet='sheet1';
run;
/*commaw.d:数值的整数部分自右向左每三位用逗号隔开;w包括逗号和小数点
percentw.d:自动将变量乘以100,并加上%;包括%,%为3个字节*/
data c;
set num;
format num 5.2 cost comma16.1 per percent7.1;
run;
/*日期型输出格式展示*/
proc import datafile='D:\test\num.xlsx' out=day dbms=xlsx replace;
sheet='sheet2';
run;
data day2;
set day;
format day1 yymmddc10. day2 yymmddd10. day3 yymmddp10.;/*c:冒号;d:-;p:.;s:/;b:空格; n:无*/
run;
data day3;
set day;
format day1 yymmdds10. day2 yymmddb10. day3 yymmddn8.;/*c:冒号;d:-;p:.;s:/;b:空格; n:无*/
run;
自定义输出格式
一般格式:
proc format;
value 变量名
(自定义输出格式内容);
run;
$:原变量是字符型就加,数值型不加。
/*数值型*/
proc format;
value age
low-<12='不满12'
12-<15='大于12不满15'
15-high='大于15';
run;
/*字符型*/
proc format;
value $sex
'M'=0
'F'=1;
run;
一般格式:
proc tabulate/选项;
class 分组变量1 分组变量2……;
var 分析变量1 分析变量2……;
table 变量布局;
keylabel 关键词=‘标签’……;
run;
proc tabluate语句的选项:
missing:在结果中显示缺失数据,如果不写该选项,默认不显示缺失数据值;
class语句:分组变量会自动计算例数;
分组变量关键词:n(例数)、colpctn(列百分比)、rowpctn(行)、pctn(单元格百分比)
var语句:分析变量会自动计算总和;
分析变量关键词:n、mean、std、min、max、sun、median、q1(第25百分位数)、q3(第75百分位数)、qrange(四分位数间距)
table语句中的变量布局:
用逗号(,)连接结果以二维列联表格式显示;
用星号(*)连接结果以交叉的形式显示;
用空格( )连接结果以并列的形式显示;
/*tabulate*/
/*统计关键词没有指定,默认对分类变量输出例数,对连续变量输出总和*/
proc import datafile='D:\test\admit.xlsx' out=admit dbms=xlsx replace;
run;
proc tabulate data=admit missing;
class sex age;
/*并列*/
/* table sex age;*/
/*交叉*/
/* table sex*age;*/
/*二维列联表,(行,列)*/
table sex,age;
run;
/*分类变量会自动计算例数*/
proc tabulate data=admit missing;/*默认下不考虑缺失数据,missing可改变这种默认*/
class actlevel;/*分类变量,按table语句指定的布局显示*/
table actlevel;
run;
/*分析变量自动计算总和*/
proc tabulate data=admit missing;
var age;/*分析变量,显示指定变量的相应统计指标*/
table age;
run;
/*两种方式设置变量标签*/
proc tabulate data=admit missing;
class actlevel;
var age;
table actlevel,age*(mean n);
label actlevel='水平'age='年龄';/*指定变量名的标签*/
keylabel mean='平均值';/*指定关键词的标签*/
run;
proc tabulate data=admit missing;
class actlevel;
var age;
table actlevel='水平',age='年龄'*(mean='平均值' n);
run;
/*对表格加以修饰*/
proc tabulate data=admit missing;
class actlevel;
var age;
table actlevel="",age*(mean n) /box="水平";
label age="年龄";
keylabel mean="平均值" n="例数";
run;
/*加format*/
proc format;
value $actfmt 'LOW'='(1) Low'
'MOD'='(2) Moderate'
'HIGH'='(3) High';
run;
proc tabulate data=admit missing;
class actlevel;
var age;
format actlevel $actfmt. ;
table actlevel,age*(mean*f=4.1 n);/*mean显示为4.1的格式*/
label actlevel='水平' age='年龄';
keylabel mean='平均值';
run;