03数据导入与导出
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二步:进入到选择导入数据文件的画面,选择刚刚导出的 文件test.xls
第三步:进入到选择table的画面,这里选择下拉列表中的’1’ 。
第四步:选择要导入的数据文件所在的逻辑库及文件名称,这里 选work临时库和test文件名。
第五步:进入到Import Wizard画面,给前面的导入过程产生 一段程序,并提示是否储存这个程序,如不想存储则直接 点击Finish按钮。输入E:\2.sas。
’~’ 规定读入字符值时保留引号。此选项只在INFILE语句中与选项DSD一起 使用时才有效。 注意:DSD选项在第六章会有详细介绍。这里先说明它的4个功能: 将默认分隔符改为逗号; 对于连续的两个分隔符,中间按缺失值处理; 将字符变量值的引号去掉; 对引号里的分隔符按字符来对待。 所以INFILE语句中的DSD选项自动把数据记录的分隔符设置为逗号,并 且读入数据之前,把字符数据中的引号去掉,若加上’~’就会保留数据 中的引号。
第二步:点选next,进入到选择输出格式界面。通过下拉菜 单选择给定的格式:Microsoft Excel 97,2000 or 2002 workbook,然后点选next.
第三步:进入到设定输出文件位置和名称界面,通过浏览按 钮选择输出位置,并键入输出文件的名称,如E:\test.xls .
第3章 数据导入与导出
清华大学经管学院 朱世武 Zhushw@ Resdat样本数据: SAS论坛:
访问两类外部文件
SAS系统访问的外部文件可以分为两类: PC格式的数据文件; 流行数据库(DBMS)文件。 Txt和Excel表是PC格式的数据文件,本章讲解它 们与SAS数据集之间的相互转换方法。
例3.2 多行输入数据 data A; input Amount @@; cards; 35 78 99 36 79 21 23 90 87 90 33 55 66 12 98 1100 ; run;
例中,在input语句后面加入了@@,后面的输入行不 需要一行一行地输入
列方式输入使用条件 原始数据输入值的位置在每个记录行相同的列中; 原始数据输入值是标准的数值格式或一般字符格式。 列方式输入的特点 原始数据输入值可以按任意顺序读取; 字符型原始数据中间可以有空格; 可以重复读取原始数据记录行的某一部分。 读入的数据值不需要用空格或者其它分隔符隔开。
选项说明
specification(s) variable-list @ 变量及其格式的详细说明 列出要读入数据值的变量 执行下一个INPUT语句时指针移到下 一记录行, 要求一条记录必须对应一个数据行 执行下一个INPUT语句时指针保持在 当前记录行, 不要求一条记录对应一个数据行
@@
$
start-column end-column decimalplaces
利用Export导出Excel数据表。 proc export data=sashelp.class outfile=”E:\test.xls” dbms=excel replace; sheet=”1”; run;
数据步导入Txt格式数据源
原始数据根据来源不同会有不同的记录格式,为了将 各种格式的原始数据通过数据步写入SAS数据集,需 要使用INPUT语句的五种输入方式和混合输入方式。
定义字符型变量
规定变量值在记录行中的起始列 规定变量值在记录行中的终止列 小数点位置
pointer-control
informat informat-list decimals
ห้องสมุดไป่ตู้
移动输入指针到指定的行或列上
列出变量的输入格式; 列出变量列表对应的输入格式列表 规定小数部分的位数
列方式输入
语句格式 INPUT variable <$> start-column <-end-column> <.decimalplaces> <@ | @@>; 设定变量名称,<>为可选项,如果选择$则表示这 是一个字符变量。而start-column <-end-column> 表示该变量在记录行中的起始列(终止列)。
数据必须是字符数据或标准的数值数据。
列表方式输入格式修饰符
‘:’ 当原始数据是以空格为分隔符时,要想对变量值长度不一致的 变量规定统一长度就必须用到该格式修饰符。 规定变量值是从非空格列中读取, 直到第一次遇到以下三种 情况之一,该变量值的读取过程才结束: 下一个空格列; 达到变量预先设定的长度(如果没有预先设定变量长度就是 SAS默认字符长度8个字节); 数据行结束。
可以通过下面的这个例子来理解DSD和’~’的作用。 例3.6 DSD和’~’的作用,读入字符值时保留引号。’~’ 只在 INFILE语句中与选项DSD一起使用时才有效。 data topics2; infile datalines dsd; input speakers : $15. title ~ $40. location & $10.; datalines; Song, "Credit Derivatives", Room 329 Zhu, "Credit Risk Management", Room 406 ; proc print; run; 由上例可以看出,“~”包含“:”选项的功能。例中,虽然title变量 的长度是40,而观测值得长度都不到40,仍然可以得到正确结果。 所以“~”包含 “:”的功能。
例3.3 任意顺序读取和重复读取。 input first 73-80 second 10-12; /*任意顺序读取*/ input id 10-15 group 13; /*重复读取 */
列方式输入下的缺失值和空格
空格和点(.)都作为缺失值处理; 忽略值域开头和结尾部分的空格。
列表方式输入
使用INPUT语句读入原始数据
INPUT语句的用途有两方面: 读入外部数据文件中的数据; 读入CARDS语句后面的数据。
INPUT语句的五种输入方式
简单方式: INPUT < specification(s)> <@ | @@>; 列方式: INPUT variable <$> start-column <-end-column> <.decimalplaces> <@ | @@>; 格式化方式: INPUT< pointer-control> variable informat. <@ | @@>; INPUT <pointer-control> (variable-list) (informat-list) <@ | @@>; INPUT <pointer-control > (variable-list) (<n* > informat.)< @ | @@>;
列表方式: INPUT <pointer-control> variable <$> <&> <@ | @@>; INPUT <pointer-control> variable <:|&|~> <informat.> <@ | @@>;
命名方式: INPUT <pointer-control> variable= <$> <@ | @@>; INPUT variable= <$ > start-column <-end-column> <.decimals> <@ | @@>; INPUT <pointer-control> variable=informat. <@ | @@>;
打开如下。
过程步导入及导出数据集
利用过程Import与Export进行数据集的导入与导出。 利用Import导入EXELL数据表。
proc import out=tb31 datafile= "D:\ResDat\table.xls" /*导出地址为D:\ResDat,文件名table.xls */ dbms=excel2000 replace; range="'3#1$'"; /*导入表3.1 */ getnames=yes; run;
例3.4 空格为分隔符时,对变量值长度不一致的变量规定统一长 度。 data; input Univ : $12. Plc$ Zip ; cards; MIT Boston 100023 TsinghuaUniv Beijing 100084 ; 例中,第一个观测变量Univ的值为MIT(只读3个字符,因遇到空 格而结束)第二个观测值为TsinghuaUniv(得到先前定义的变量长度 12)。如果只对变量Univ规定长度,而不加格式修饰符(:),在读入 第一条记录时就会出错,如果不对变量Univ规定长度,读入第二 条记录时就会只读入Tsinghua,而不是预先要读入的TsinghuaUniv, 这是因为SAS默认的字符变量的存储长度就是8个字节。
例3.1 使用列方式输入数据。 data scores; infile datalines truncover; input name $ 1-10 sex $11 age 12-15 ; datalines; Justine F 12 Bob M 13 ; ----+----1----+----2----+----3----+例中,规定记录行的第1到10列为变量NAME的输入值,11 列为变量SEX的输入值,12到15列为变量AGE的输入值。 NAME和SEX为字符型变量。
第四步:点选ok,进入到SAS Export Wizard画面,SAS Export Wizard和后面要介绍的Import Wizard是SAS转换数据文件的工具 。在这个画面中,Export Wizard要求对这个输出过程的table命 名,这时可以直接选finish完成输出,或者命名为’1’。
第五步:如果上一步选择命名,SAS会建立一段与上述窗口 操作相同的程序,并提示是否要保存这段程序。
将这段程序储存为E:\1.sas,点击Finish按钮,就会产生程序文 件1.sas。打开如下。
数据集导入
同样可以通过下列步骤导入test.xls。 第一步:文件=>导入数据,选择导入数据文件的类型,和导出程 序一样,选择excel相关格式。然后点选next。
加格式修饰符(:) Univ MIT TsinghuaUniv 不加格式修饰符(:) Univ MIT Boston 1 Plc 00023 Zip . Plc Boston Beijing Zip 100023 100084
’&’ 字符型输入值可能包含一个或几个空格。因为空格是列表读入方式默 认的分隔符,所以,如果要读入的数据值本身包括空格时就必须用此 格式符。 例3.5 空格为分隔符时,字符型输入值嵌有空格。 data ; input name & $12. age; cards; Jiang Zhu 20 Annie Zheng 31 I. Altman 60 ; run; 例中,第一个观测name 中Jiang Zhu (包含一个空格),第二个观测为 Annie Zheng (包含一个空格)。分隔符为两个空格。 注意:因’&’有以上特性,数据之间应该用两个以上的空格隔开。
流行数据库(DBMS)文件与SAS软件可以直接相互 调用,读者可参考相关资料。
Excel表与SAS数据集之间的转换
菜单操作导入及导出数据集
数据集的导出 第一步:点选文件=>导出数据,出现如下界面,要求输入要导出 文件的逻辑库名称和数据文件名称,如:要导出sashelp逻辑库 的class数据文件,通过下拉菜单选择逻辑库和数据文件。
简单列表方式输入 INPUT <pointer-control> variable <$> <&> <@ | @@>; 调整列表方式输入 INPUT <pointer-control> variable <:|&|~> <informat.> <@ | @@>;
列表方式输入使用条件
输入数据值之间至少有一个空格隔开; 用小数点表示表示缺失值; 字符型值的默认长度为8个字节,也可以用LENGTH, ATTRIB, INFORMAT语句规定长度;