SAS导入数据.pdf

上传人:b****1 文档编号:3176184 上传时间:2022-11-19 格式:PDF 页数:4 大小:277.72KB
下载 相关 举报
SAS导入数据.pdf_第1页
第1页 / 共4页
SAS导入数据.pdf_第2页
第2页 / 共4页
SAS导入数据.pdf_第3页
第3页 / 共4页
SAS导入数据.pdf_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

SAS导入数据.pdf

《SAS导入数据.pdf》由会员分享,可在线阅读,更多相关《SAS导入数据.pdf(4页珍藏版)》请在冰豆网上搜索。

SAS导入数据.pdf

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有很好的批量导入解决方法。

(完)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1