5.SAS格式及格式化输入

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

$2,210 $21,311 ; run; proc print; run;
OUTPUT: Obs x y 1 12002 34231 2 2210 21311
Slide 14
例4. 有如下两列数据,其中第一列后两位数字为小数, 第二列后4位为小数,例如第一个数据$12,002读入后应 为120.02。请建立一个SAS数据集,变量为x、y。
SAS格式与格式化输入
Slide 1
SAS的输入输出格式
➢ SAS的变量包含数值型和字符型变量。 ➢ SAS系统对数值型、字符型和日期时间数据提供了许
多输入、输出格式。 ➢ 用户可以用FORMAT过程来定义自己的格式。
➢ 什么是格式(Format)? Format is an instruction the SAS System uses to display or write each value of a variable.
informat birth yymmdd10. height 5.1;
cards;
Wanghuacong 1995/06/09 178.5
Zuosha
1996/12/15 165.8
;
proc print;
run;
Slide 10
输入格式
1、数值型变量输入格式
几个常用的格式: w.d :读入标准数值数据 COMMAw.d :用于数据中包含逗号(,)的数据形式 DOLLARw.d :用于数据前面有美元符($)的数据形式 说明: w:宽度,表示数值域所含的列数。小数点占一列。 d:小数位数。d可以省略。 例如:
➢ 通用规则:
所有输入格式必须包含一个点(.)作为名字的一部分; 对于省略W和D值的输入格式,使用系统缺省值。
Slide 4
输入格式使用方法
➢ INPUT语句; ➢ INPUT函数; ➢ INFORMAT或ATTRIB语句;
Slide 5
INPUT语句,最常用情况,即格式化输入
➢ 格式化输入方式是INPUT语句读取非标准数据的唯一方 法。即在变量名后面规定输入格式。这种输入方式不仅 给出了该输入数据所对应的类型,而且给出了输入数据 所在列的长度。
Obs
name
1 Bill Clinton
2 George Bush
3 Tony Blair
4 Saddam Hussein
5 Vladimir Putin
Slide 18
data a; input name $ char14.; cards; Bill Clinton George Bush Tony Blair Saddam Hussein Vladimir Putin ; proc print; run;
Slide 15
2.字符型变量输入格式
$w. 输入格式
读入标准字符数据。 在读入字符值之前,$w.输入格式清除字符值开头的空格。 $w.输入格式把一个点(.)转换为空格,因为它把一个点看作缺失值。
例,读入数据时,清除数据开头空格并将(.)转换为缺失值。
Data a;
input name $5.;
cards;
Informat
Description
DATEw. DATETIMEw. DDMMYYw. MMDDYYw. TIMEw.d YYMMDDw.
reads date values in the form DDMMMYY or DDMMMYYYY reads datetime values in the form ddmmmyy hh:mm:ss.ss or ddmmmyyyy hh:mm:ss.ss reads date values in the form DDMMYY or DDMMYYYY reads date values in the form MMDDYY or MMDDYYYY reads hour minute and seconds in the form hh:mm:ss.ss reads date values in the form YYMMDD or YYYYMMDD
数字7是怎 么来的?
2,210 21,311
; run; proc print; run;
OUTPUT: Obs x y 1 12002 34231 2 2210 21311
Slide 12
例2. 有如下两列数据,其中第一列后两位数字为小数, 第二列后4位为小数,例如第一个数据12,002读入后应为 120.02。请建立一个SAS数据集,变量为x、y。
$12,002 $34,231
$2,210 $21,311
data a;
input x dollar8.2 y dollar8.4;
cards;
$12,002 $34,231
$2,210 $21,311
;
OUTPUT:
run; proc print; run;
Obs x y 1 120.02 3.4231 2 22.10 2.1311
MMDDYY10.
25JAN2004
16095
01/25/2004
Slide 3
输入格式
➢ 输入格式是SAS系统用来读入数据值的一个指令。 ➢ 输入格式形式
<$> INFORMAT <W>.<D>
➢ 选项说明:
$ INFORMAT W D
规定为字符输入格式 规定有效SAS输入格式 规定输入数据的列数 规定数值输入格式中保留小数的位数
➢ SAS有输入格式和输出格式。
Slide 2
输入输出格式
Informat 原始数据值
SAS
Format
格式化的
(输入格式) 变量的值(输出格式) SAS变量值
Informat
Format
dollar10.
comma8.
$548,231
548231
548,231
Informat
Format
Date9.
x xyz
options nocenter;
proc print noobs;
uvw
run;
Slide 16
$CHARw. 输入格式
➢ 读含有空格的字符数据。$CHARw.输入格式除了不清除字符 值开头的空作格外,它等同于标准的$w.输入格式。
例, 保留开头和结尾的空格。
data;
input name $char10.;
cards;
xyz .
uvw ; options nocenter;
输出结果: xyz . uvw
proc print noobs;
run;
INPUT语句采取自由格式输入时,INFORMAT或ATTRIB语句 中不能使用$CHAR.输入格式,因为SAS把空格看作数据行中 数值间的分隔符。
例中,INPUT函数将字符变量X的值39.8,通过输入 格式 4.1 转换为一个数值39.8,赋给变量Y,因此Y为 数值型变量
Slide 8
➢ 例,数值转换为字符时会产生不正确结果
data; x=2557898; y=input(x, $8.); put y; run;
例中,产生的结果为255, 不正确; 除非增加输入格式的长度,如y=input(x, $15.);
5.2,表示该变量的数据占5列,其中后两位是小数位。 注意:一定要弄清数据占据的列数,否则极易出错。
Slide 11
例1. 有如下两列数据,数据中包有逗号,请建立一个 SAS数据集,变量为x、y。
12,002 34,231
2,210 21,311
data a;
input x comma7. y comma7.; cards; 12,002 34,231
其它日期在SAS系统中被存储为与该日期相差的天数。
例如,1960年1月3日,在系统中存为2。 2004年1月25日,在系统中存为16095。
注意:为了使数值型变量显示日期形式,必须使用日期型
的输出格式,同样地为了以日期形式输入日期必须使用 日期型的输入格式。
Slide 20
➢ 日期数据的读入通常需要运用日期型的格式
Width Range 7-32
Default Width 7
13-40 18
6-32 8
6-32 6
5-32 8
6-32 8
Slide 21
日期时间输出格式
日期型数据的输入输出格式大部份是相同的,下面是几个常用的:
Format
Description
DATEw.
writes date values in the form
12,002 34,231
2,210 21,311
data a;
input x comma7.2 y comma7.4;
cards;
12,002 34,231
2,210 21,311 ;
OUTPUT: Obs x y
run; proc print;
1 120.02 3.4231 2 22.10 2.1311
此时,最常用的做法是使用put函数,而不是input函数 data; x=2557898; y=put(x, $8.); put y; run;
Slide 9
用INFORMAT语句或ATTRIB语句
➢ 例, DATA步中用INFORMAT语句
data a;
input name $11. birth height;
➢ 例中,从第1列开始以$8. 格式读入变量name,第14列开始以 yymmdd10.格式读入变量birth, 右移1列,从第25列开始以5.1读 入变量height
Slide 7
INPUT函数
➢ 例,字符转换数值
data; x=‘39.8'; y=input(x, 4.1); put x= y=; run;
Slide 17
$CHARw. :读取包含空格的连续字符
例5. 下面是一些人名,请将其读入到一个变量NAME中, 注意:姓和名之间有一个空格,建立的SAS数据集如右 边的形式。
Bill Clinton George Bush Tony Blair Saddam Hussein Vladimir Putin
语句格式:
INPUT< pointer-control> variable informat. <@ | @@>; INPUT <pointer-control> (variable-list) (informat-list) <@ | @@>; INPUT <pointer-control > (variable-list) (<n* > informat.)< @ | @@>; 其中: n*规定在输入列表中后面的输入格式重复n次。
yymmdd or yyyymmdd
Width Range 5-9
2-10
2-8
2-8
Default Width 7
8
8
8
Slide 22
例6. 有如下的日期数据,请建立一个SAS数据集EX6存储, 并以日期的形式显示出来。
1Jan2002 03 Jan 2003 15/May/2004 12-FEB-2005 17*May* %2006 1**OCT**2007 30%sep%//2008
Slide 6
INPUT语句
➢ 例如,
data a;
input name $11. @14 birth yymmdd10. @+1 height 5.1;
cards;
Wanghuacong 1995/06/09 178.5
Zuosha
1996/12/15 165.8
;
proc print;
run;
run;
Slide 13
例3. 有如下两列数据,数据中包有$和逗号,请建立 一个SAS数据集,变量为x、y。(例如$12,002读入后 应为12002 )
$12,002 $34,231
$2,210 $21,311
data a;
input x dollar8. y dollar8.;
cards;
$12,002 $34,231
ddmmmyy or ddmmmyyyy
DDMMYYw. writes date values in the form
ddmmyy or ddmmyyyy
MMDDYYw. writes date values in the form
mmddyy or mmddyyyy
YYMMDDw. writes date values in the form
如果将char14.去掉,语句 改为:input name $;
结果是什么样的呢?
Obs name 1 Bill Clinton 2 George Bush 3 Tony Blair 4 Saddam Hussein 5 Vladimir Putin
Slide 19
3、日期数据输入格式
日期和时间数据的存储 SAS采用数值存储日期和时间形式的数据。 在默认情况下,SAS系统以0代表1960年1月1日0时。
相关文档
最新文档