1.PROC FORMAT 定义FORMAT存放位置
使用proc format自定义数据格式,常用格式如下:
proc format library="libref" fmtlib ;
library= 表示指代提前使用libname定义的数据库,该数据库内含有包含format的目录,如果数据库没有该目录SAS会自动创建一个;如果不使用library= 则会将所创建格式放入默认的目录,该目录名为work.formats,因为SAS默认的数据库是work;fmtlib显示目录包含的format;
建议使用library 作为存放格式目录的数据库名,如:
libname library "c:\sas\formats\lib";
proc format library=library;
programming;
run;
如此我们自定义format均默认存放于library数据库名叫formats的目录中,还可以修改目录的默认的名称formats,如:
proc format library=library.catalog;则创建的目录名由默认的formats改为catalog.
2.PROC FORMAT 定义FORAMT
proc format library=library ;
value format-name
range1="label1"
range2="label2";
run;
value 语句则定义放入目录内格式的具体内容:
a)format-name 是格式名称名称,不超过8位字符,不以“.”和数字结尾,字符型的格式集range1为字符需要加上format-name 前面加上$符号;
b)range 可以是多个数值或字符:
单独字符或数值,24 或“A”;数值范围如LOW-500;字符范围如"A"-"M";一系列独立的字符或数字用","分隔,90,180,270或"B","D","F"
可以使用<来避免数值范围的重叠如:
low-<13="low" (不含数字13,low表示变量最小值,如果low应用于字符则包括缺失)
13-high="teenage" (不含数字20,high表示变量最大值)
other="elder" (other表示前面没有定义的内容)
c)label 是引号引用的字符串:不超256个字符,建议使用双引号可以包含单引号
定义完成后必须用分号结束表示该格式命名完成。
3.使用FORMAT
Format使用前必须提前使用libname定义好存放FORMAT的目录的数据库,SAS会提前在该数据库内和WORK数据库内搜索FORMAT,如果需要删除提前定义好的格式可以使用PROC CATALOG实现。
FORMAT的使用时在格式名称后加上“.”,可以在DATA步和PROC步都使用FORMAT,DATA步使用format会与该变量名永久绑定,如:
format jobtitle jobfmt.;
举例如下:
使用fmtlib会展示该目录内包含的所有格式名称及内容,如:
libname library "c:\sas\formats\lib";
proc format library=library fmtlib;
run;