SAS导入数据.pdf
- 文档编号:3176184
- 上传时间:2022-11-19
- 格式:PDF
- 页数:4
- 大小:277.72KB
SAS导入数据.pdf
《SAS导入数据.pdf》由会员分享,可在线阅读,更多相关《SAS导入数据.pdf(4页珍藏版)》请在冰豆网上搜索。
SASSAS培训第一讲培训第一讲课程:
数据的导入和导出部门:
创新业务部时间:
2014/11/19内容概要:
1.菜单操作2.Procimport3.Infile语句4.Libname5.批量导入数据(不讲)6.数据的导出(直接使用菜单方法或procexport,不讲)7.各种导入方法的优缺点数据类型:
Excel数据,csv数据(逗号分隔符),Access数据详细讲解:
1.1.菜单导入数据菜单导入数据(只介绍(只介绍EXCELEXCEL数据导入,其他类似)数据导入,其他类似)1)打开导入数据向导,如下图;2)选择将要导入的数据类型,然后点击“next”;3)选择将要导入的数据的物理地址,点击“OK”进入下一步;4)选择将要导入的table,点击“next”;5)选择将数据导入哪个逻辑库并填入数据集名称,点击“next”;6)该步让用户选择是否将菜单操作背后的代码导出,若无必要直接点击“Finish”,完成数据的导入。
2.2.ImportImport过程步导入数据过程步导入数据1)Excel表格数据procimportout=index1datafile=C:
UsersAdministratorDesktop399101.xlsxdbms=excelreplace;range=sheet1$;getnames=NO;run;参数解释:
dbms规定外部文件格式的标示名replace规定替换已存在的文件range指定将要导入的数据范围getnames规定是否将第一行数据作为变量名2)csv数据procimportout=import_csvdatafile=C:
UsersAdministratorDesktopdata_lesson1鞍山20141112.csvdbms=csvreplace;delimiter=,;getnames=yes;datarow=2;guessingrows=4000;run;参数解释:
dbms规定外部文件格式的标示名replace规定替换已存在的文件delimiter规定外部文件分隔符getnames规定是否将第一行数据作为变量名datarow规定从第几行开始读取数据guessingrows规定根据前多少条数据确定变量格式说明:
a)对于文件格式的标示名与源文件格式之间的对应关系参SAS编程技术教程b)一般情况都加上replace,以免重新导入数据时出错,当然也可以不加c)若文件含分隔符,则必须规定delimiter选项d)当getnames=yes时,datarow应大于1e)guessingrows最大取值为4000,若缺省此项,SAS默认将第一条数据的格式作为变量格式。
对于数据量超过4000条的数据最好不要使用procimport导入数据,有可能会导致字符被截断等情况。
接下来介绍的infile方法可以解决这一点。
3)Access数据procimportout=import_actable=contentdbms=accessreplace;database=C:
UsersAdministratorDesktopdata_lesson1SpiderResult.mdb;uid=;pwd=;run;3.3.InfileInfile语句导入数据语句导入数据在data步中使用infile语句,可以通过先定义变量的输入格式,再导入数据,避免出现字符截断等情况。
Infile语句导入数据的基本格式如下:
datainfile_csv;infileC:
UsersAdministratorDesktopdata_lesson1鞍山20141112.csvdsddelimiter=,firstobs=2truncoverlrecl=1000;informatarea_plate$munity$60.address$200.price$20.estate_time$40.constr_type$50.covers_area$30.constr_area$30.developer$100.property$100.plot_ratio$12.green_rate$12.property_fee$50.dta_date$10.pageurl$150.;inputarea_plate$community$address$price$estate_time$constr_type$covers_area$constr_area$developer$property$plot_ratio$green_rate$property_fee$dta_date$id$pageurl$;run;参数解释:
dsd表示源数据是分隔符敏感性的,即数据中存在非空格的分隔符delimiter规定外部文件分隔符firstobs规定从第几行开始读取数据,类似上文中的datarowobs读取数据的行数truncover当部分行数据长度小于其他行时,使用该选项防止SAS读入到下一行lreclSAS默认每条数据的长度不超过256个字节,当一条记录的长度大于该值时,会导致部分字段读取出错,使用lrecl可以定义单条数据的最长长度。
4.4.LibnameLibname生成库文件生成库文件Libname可以用来定义一个逻辑库,每个逻辑库对应一个数据库引擎,默认的情况下数据库引擎为V9(SAS自带数据库引擎)。
当然,也可以自由选择其他库引擎。
在导入EXCEL数据时可以定义一个库引擎为EXCEL的逻辑库,可以直接将EXCEL中的各张sheet直接导入到SAS中。
LibnamedexcelC:
UsersAdministratorDesktop399101.xlsx;datalib_ex;setd.399101$n;run;对于Access数据亦然:
libnamecaccessC:
UsersAdministratorDesktopdata_lesson1SpiderResult.mdb;5.5.批量导入(批量导入(不讲不讲)1)批量导入一个文件中的所有csv数据需要编写一个宏,下面是批量导入100个城市的房价数据的代码:
%macrodirectory(dir);%letrs=%sysfunc(filename(filref,&dir);%letdid=%sysfunc(dopen(&filref);%letnobs=%sysfunc(dnum(&did);%doi=1%to&nobs;%letname=%qscan(%qsysfunc(dread(&did,&i),1,.);%letext=%qscan(%qsysfunc(dread(&did,&i),-1,.);datafangjia&i;infile&dir.&name.&extdsddelimiter=,firstobs=2truncoverlrecl=1000;informatarea_plate$munity$60.address$200.price$20.estate_time$40.constr_type$50.covers_area$30.constr_area$30.developer$100.property$100.plot_ratio$12.green_rate$12.property_fee$50.dta_date$10.pageurl$150.;inputarea_plate$community$address$price$estate_time$constr_type$covers_area$constr_area$developer$property$plot_ratio$green_rate$property_fee$dta_date$id$pageurl$;run;%end;%letrc=%sysfunc(dclose(&did);%mend;%directory(E:
房价项目房价网数据20141113);2)批量导入一张Excel表格中的多张sheet或批量导入Access文件中多张table使用libname导入方法即可。
6.6.数据的导出数据的导出略7.7.各种导入方法的优缺点各种导入方法的优缺点1)菜单操作方便,但对于有分隔符的数据(csv,txt),只根据前20行来确定各变量的属性,容易导致数据截断;2)procimport对于不同数据类型,导入方法不尽相同,同样对于有分隔符的数据最多只能根据前4000条数据确定各变量的属性,也会导致数据截断;3)infile语句不能导入EXCEL或ACCESS文件,但对于有分隔符的数据效果很好,还可以避免数据截断;4)libname不能导入csv或txt文件,但对于Excel或Access有很好的批量导入解决方法。
(完)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SAS 导入 数据
![提示](https://static.bdocx.com/images/bang_tan.gif)