SAS格式及格式化输入.pptx
《SAS格式及格式化输入.pptx》由会员分享,可在线阅读,更多相关《SAS格式及格式化输入.pptx(73页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、SAS的输入输出格式的输入输出格式SAS的变量包含数值型和字符型变量。SAS系统对数值型、字符型和日期时间数据提供了许多输入、输出格式。用户可以用FORMAT过程来定义自己的格式。什么是格式(Format)?Format isaninstructiontheSASSystemusestodisplayorwriteeachvalueofavariable.SAS有输入格式和输出格式。第1页/共73页输入输出格式输入输出格式原始数据值原始数据值SAS变量的值变量的值格式化的格式化的SAS变量值变量值Informatdollar10.Formatcomma8.548,23125JAN2004160
2、9501/25/2004InformatDate9.FormatMMDDYY10.$548,231548231Informat(输入格式)(输入格式)Format(输出格式)(输出格式)第2页/共73页p输入格式输入格式 输入格式是SAS系统用来读入数据值的一个指令。输入格式形式 INFORMAT.选项说明:通用规则:所有输入格式必须包含一个点(.)作为名字的一部分;对于省略W和D值的输入格式,使用系统缺省值。第3页/共73页输入格式使用方法输入格式使用方法 INPUT语句;INPUT函数;INFORMAT或ATTRIB语句;第4页/共73页INPUT语句,最常用情况,即格式化输入语句,最常用
3、情况,即格式化输入 格式化输入方式是INPUT语句读取非标准数据的唯一方法。即在变量名后面规定输入格式。这种输入方式不仅给出了该输入数据所对应的类型,而且给出了输入数据所在列的长度。语句格式:语句格式:INPUTvariableinformat.;INPUT(variable-list)(informat-list);INPUT(variable-list)(informat.);其中:n*规定在输入列表中后面的输入格式重复n次。第5页/共73页INPUT语句语句例中,从第1列开始以$8.格式读入变量name,第14列开始以yymmdd10.格式读入变量birth,右移1列,从第25列开始以5
4、.1读入变量height例如,datadata a;input name$11.1414 birth yymmdd10.+1 1 height 5.15.1;cards;Wanghuacong 1995/06/09 178.5 Zuosha 1996/12/15 165.8;procproc printprint;runrun;第6页/共73页INPUT函数函数 例,字符转换数值data;x=39.8;y=input(x,4.1);putx=y=;run;例中,INPUT函数将字符变量X的值39.8,通过输入格式 4.1 转换为一个数值39.8,赋给变量Y,因此Y为数值型变量第7页/共73页例
5、,数值转换为字符时会产生不正确结果 例中,产生的结果为255,不正确;除非增加输入格式的长度,如y=input(x,$15.);此时,最常用的做法是使用put函数,而不是input函数data;x=2557898;y=put(x,$8.);put y;run;data;x=2557898;y=input(x,$8.);put y;run;第8页/共73页用用INFORMAT语句或语句或ATTRIB语句语句 例,DATA步中用INFORMAT语句 datadata a;input name$11.birth height;informatinformat birth birth yymmdd10
6、.yymmdd10.height height 5.15.1;cards;Wanghuacong 1995/06/09 178.5 Zuosha 1996/12/15 165.8;procproc printprint;runrun;第9页/共73页输入格式输入格式1、数值型变量输入格式几个常用的格式:w.d:读入标准数值数据COMMAw.d:用于数据中包含逗号(,)的数据形式 DOLLARw.d:用于数据前面有美元符($)的数据形式说明:w:宽度,表示数值域所含的列数。小数点占一列。d:小数位数。d可以省略。例如:5.2,表示该变量的数据占5列,其中后两位是小数位。注意:一定要弄清数据占据的
7、列数,否则极易出错。第10页/共73页data a;input x comma7.y comma7.;cards;12,002 34,2312,210 21,311;run;proc print;run;OUTPUT:Obs x y 1 12002 34231 2 2210 21311例例1.有如下两列数据,数据中包有逗号,请建立一个有如下两列数据,数据中包有逗号,请建立一个SAS数据集,变量为数据集,变量为x、y。12,002 34,2312,210 21,311数字7是怎么来的?第11页/共73页data a;input x comma7.2 y comma7.4;cards;12,002
8、 34,2312,210 21,311;run;proc print;run;OUTPUT:Obs x y 1 120.02 3.4231 2 22.10 2.1311例例2.有如下两列数据,其中第一列后两位数字为小数,第有如下两列数据,其中第一列后两位数字为小数,第二列后二列后4位为小数,例如第一个数据位为小数,例如第一个数据12,002读入后应为读入后应为120.02。请建立一个。请建立一个SAS数据集,变量为数据集,变量为x、y。12,002 34,2312,210 21,311第12页/共73页data a;input x dollar8.y dollar8.;cards;$12,00
9、2$34,231$2,210$21,311;run;proc print;run;OUTPUT:Obs x y 1 12002 34231 2 2210 21311例例3.有如下两列数据,数据中包有有如下两列数据,数据中包有$和逗号,请建立和逗号,请建立一个一个SAS数据集,变量为数据集,变量为x、y。(例如例如$12,002读入后读入后应为应为12002)$12,002$34,231$2,210$21,311第13页/共73页data a;input x dollar8.2 y dollar8.4;cards;$12,002$34,231$2,210$21,311;run;proc prin
10、t;run;OUTPUT:Obs x y 1 120.02 3.4231 2 22.10 2.1311例例4.有如下两列数据,其中第一列后两位数字为小数,有如下两列数据,其中第一列后两位数字为小数,第二列后第二列后4位为小数,例如第一个数据位为小数,例如第一个数据$12,002读入后应读入后应为为120.02。请建立一个。请建立一个SAS数据集,变量为数据集,变量为x、y。$12,002$34,231$2,210$21,311第14页/共73页$w.输入格式输入格式 读入标准字符数据。在读入字符值之前,$w.输入格式清除字符值开头的空格。$w.输入格式把一个点(.)转换为空格,因为它把一个点看
11、作缺失值。输出结果:xyzuvw2.字符型变量输入格式 例,读入数据时,清除数据开头空格并将(.)转换为缺失值。Data a;input name$5.;cards;xyz .uvw;options nocenter;proc print noobs;run;第15页/共73页$CHARw.输入格式输入格式 读含有空格的字符数据。$CHARw.输入格式除了不清除字符值开头的空作格外,它等同于标准的$w.输入格式。例,保留开头和结尾的空格。data;input name$char10.;cards;xyz .uvw ;options nocenter;proc print noobs;run;I
12、NPUT语句采取自由格式输入时,INFORMAT或ATTRIB语句中不能使用$CHAR.输入格式,因为SAS把空格看作数据行中数值间的分隔符。输出结果:xyz.uvw第16页/共73页$CHARw.:读取包含空格的连续字符例例5.下面是一些人名,请将其读入到一个变量下面是一些人名,请将其读入到一个变量NAME中,中,注意:姓和名之间有一个空格,建立的注意:姓和名之间有一个空格,建立的SAS数据集如右数据集如右边的形式。边的形式。Bill ClintonGeorge BushTony BlairSaddam Hussein Vladimir PutinObsname1Bill Clinton2G
13、eorge Bush3Tony Blair4Saddam Hussein5Vladimir Putin第17页/共73页data a;input name$char14.;cards;Bill ClintonGeorge BushTony BlairSaddam Hussein Vladimir Putin;proc print;run;Obs name 1 Bill Clinton 2 George Bush 3 Tony Blair 4 Saddam Hussein 5 Vladimir Putin如果将char14.去掉,语句改为:input name$;结果是什么样的呢?第18页/共7
14、3页日期和时间数据的存储日期和时间数据的存储SAS采用数值存储日期和时间形式的数据。在默认情况下,SAS系统以0代表1960年1月1日0时。其它日期在SAS系统中被存储为与该日期相差的天数。例如,1960年1月3日,在系统中存为2。2004年1月25日,在系统中存为16095。注意:为了使数值型变量显示日期形式,必须使用日期型的输出格式,同样地为了以日期形式输入日期必须使用日期型的输入格式。3、日期数据输入格式第19页/共73页日期数据的读入通常需要运用日期型的格式第20页/共73页日期时间输出格式日期时间输出格式日期型数据的输入输出格式大部份是相同的,下面是几个常用的:日期型数据的输入输出格
15、式大部份是相同的,下面是几个常用的:第21页/共73页该例中日期数据的形式是什么样的?例例6.有如下的日期数据,请建立一个有如下的日期数据,请建立一个SAS数据集数据集EX6存储,存储,并以日期的形式显示出来。并以日期的形式显示出来。1Jan200203 Jan 200315/May/200412-FEB-200517*May*%20061*OCT*200730%sep%/2008DD MMM YYYY故选择DATEw.输入格式第22页/共73页 data b;input dd date15.;format dd date9.;cards;1Jan2002 03 Jan 2003 15/May
16、/2004 12-FEB-2005 17*May*%2006 1*OCT*2007 30%sep%/2008;proc print;run;Obsdd101JAN2002203JAN2003315MAY2004412FEB2005517MAY2006601OCT2007730SEP2008第23页/共73页例例7.有如下的日期数据,请建立一个有如下的日期数据,请建立一个SAS数据集数据集EX7存储,存储,并以日期的形式显示出来。并以日期的形式显示出来。01312002031220035 13 20044 21 20055 25 20061/2/20073-24-2008该例中日期数据的形式是什
17、么样的?MM DD YYYY故选择MMDDYY10.输入格式第24页/共73页01312002031220035 13 20044 21 20055 25 20061/2/20073-24-2008data b;input dd mmddyy10.;format dd mmddyy10.;cards;01312002031220035 13 20044 21 20055 25 20061/2/20073-24-2008;proc print;run;Obsdd101/31/2002203/12/2003305/13/2004404/21/2005505/25/2006601/02/200770
18、3/24/2008第25页/共73页p输出格式输出格式 选项说明:输出格式是SAS系统用来输出数据值的一个指令。输出格式形式 FORMAT.第26页/共73页通用规则:所有输出格式必须包含一个点(.)作为名字的一部分;省略W和D的值时,使用系统的缺省值;无论怎样规定输出格式中的小数位,输出格式都不会影响存贮的数据值;规定的输出格式宽度太窄小时,对字符格式截去右边的字符,对数值格式转换为BESTw.的格式;使用一个不协调的输出格式时,SAS系统首先试着使用其它类型的类似格式。如果行不通,将输出一个错误信息在SAS日志。第27页/共73页输出格式类型输出格式类型 数值输出格式;字符输出格式;日期时
19、间输出格式;使用FORMAT过程创建的自定义输出格式。第28页/共73页输出格式使用方法输出格式使用方法 DATA步中用FORMAT或ATTRIB语句;PROC步中用FORMAT或ATTRIB语句。PUT语句;PUT函数;第29页/共73页FORMAT或或ATTRIB语句,最常用方式语句,最常用方式 数据步中使用dataa;inputxcomma7.ycomma7.;formatxydollar8.;cards;12,00234,2312,21021,311;run;procprint;run;过程步中使用format语句procprint;formatxcomma7.ydollar8.;ru
20、n;过程步中使用attribattrib语句 procproc printprint;attrib x y format=comma7.;runrun;第30页/共73页PUT语句语句 在PUT语句中使用输出格式data;x=1145.32;putxdollar10.2;putxcomma8.2;run;结果为:$1,145.321,145.32第31页/共73页PUT函数函数 PUT函数对于将数值转换为字符,或者改变字符输出格式 datadata a;birth=1609516095;birthtext=put(birth,yymmdd10.);put birthtext=;put birt
21、h=;runrun;LOG窗口输出结果 birthtext=2004-01-25 birth=16095第32页/共73页常用数值变量输出格式常用数值变量输出格式第33页/共73页例子例子 datadata a;a;x=x=123456789123456789;y=y=12300001230000;z=z=1234512345;putput x x best7.best7./y /y best7.best7./z /z best7.best7.;putput x x 8.28.2;putput x x 11.211.2;putput x x 12.212.2;putput y y dollar
22、8.dollar8.;putput y y dollar10.dollar10.;runrun;Log窗口输出结果-+-+-+1.235E8 1230000 12345 1.2346E8 123456789.0 123456789.00$1230000$1,230,000可以看到SAS会根据指定的输出宽度选择最合适的输出形式,以满足指定的宽度。例如,putydollar8.;由于数据本身有7位,因此输出时仅添加了一个$符号,而未添加千分位的逗号(,),见倒数第二输出。第34页/共73页p自定义格式自定义格式使用PROCFORMAT过程进行格式的自定义。PROC FORMAT;INVALUE 格
23、式名格式名 格式格式;VALUE 格式名格式名 格式格式;其中,其中,invalue定义输入格式,定义输入格式,value定义输出格式。定义输出格式。第35页/共73页p自定义输入格式,语法自定义输入格式,语法PROCFORMAT;INVALUE 格式名格式名 定义的输入格式定义的输入格式;RUN;格式名格式名:应符合:应符合SAS的命名要求的命名要求(但不能超过但不能超过8个字符个字符),注意,注意最后一个字符不能是数字。最后一个字符不能是数字。定义的输入格式定义的输入格式:原始值原始值=格式化的输入值格式化的输入值当格式化的输入值为字符时,这字符型输入格式,名字前加当格式化的输入值为字符时
24、,这字符型输入格式,名字前加$,否则为数值型输入格式否则为数值型输入格式如,如,invalue sexinf “F”=1 “M”=2;invalue$sexicf “F”=“Female”“M”=“Male”;第36页/共73页Invalue语句自定义输入格式语句自定义输入格式2355SOOS588922223878CEEE44090111398533320740SEES2398EECC5162CCCE442132227385CCCN例,下列数据中的字母O,S,E,C,N 分别赋值为4,3,2,1,0,使用输入格式读入数据,并全部转化为数值。(5个变量)第37页/共73页PROC FORMAT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SAS 格式 格式化 输入
限制150内