如何使用SAS从Excel中读取一系列单元格

原文连接:http://tecdat.cn/?p=5211

电子表格不是数据库。可是,咱们中的许多人使用电子表格就好像它们是数据库同样,而后当电子表格布局不支持数据库样式严格的可预测行,列和变量类型时,咱们就会挣扎 - 这是分析和报告所需的基本元素。若是您使用SAS从Microsoft Excel读取数据,当您须要的数据不是从单元格A1开始时,您能够作什么?数据库

经过设计,SAS能够从电子表格中的任何单元格范围读取数据。在本文中,我将介绍如何在PROC IMPORT中使用RANGE语句来获取所需的数据。服务器

对于SAS 9.4及更高版本,SAS建议使用DBMS = XLSX以得到最大的灵活性。它适用于全部操做系统,无需其余组件,如PC文件服务器。您的Excel文件必须采用Excel 2007或更高版本格式(XLSX)。你这样作须要SAS / ACCESS到PC文件的许可证。(刚刚学习?这些DBMS = XLSX技术也适用于SAS大学版。)布局

若是您的Excel数据不是从单元格A1(导入过程的默认起点)开始,那么您能够添加包含特定单元格的RANGE =值。最简单的方法是在Excel中使用命名范围来定义数据的确切边界。学习

如何添加命名范围

要在Excel中定义命名范围,请突出显示要包括的单元格范围,而后只需在“名称框”中键入范围的新名称:ui

而后保存Excel文件。编码

而后要导入SAS,请在RANGE =选项中指定范围名称:spa

proc importdatafile="/myprojects/myfile.xlsx"out=mydatareplace;range="myspecialrange";run;

对单元格区域使用Excel表示 

若是您不提早知道范围怎么办?您可使用PROC IMPORT读取整个工做表,但结果将不包含所需的列标题和类型。考虑这样一张表:操作系统

这段代码会读它:设计

proc importdatafile="/myprojects/middle.xlsx"out=mid dbms=xlsxreplace;run;

但结果将包含许多空单元格,而且值将做为全部字符类型读取:code

经过附加编码,您可使用DATA步骤将此结果“修复”到另外一个传递中。或者,若是您愿意为特定单元格区域添加带有Excel表示法的RANGE选项,则能够在第一遍中正确阅读:

proc importdatafile="/myprojects/middle.xlsx"out=mid dbms=xlsxreplace;range="Sheet1$E7:K17";run;

如何“发现”Excel文件的结构

您还可使用LIBNAME XLSX从Excel中读取整个工做表,或者只是做为发现步骤在运行PROC IMPORT以前查看Excel文件包含的工做表。可是,LIBNAME XLSX不显示Excel命名范围。

在SAS for Windows系统上,您可使用LIBNAME EXCEL(32位)或LIBNAME PCFILES(64位)来显示有关Excel文件的更多信息。

libnamed pcfiles path="c:\myprojects\middle.xlsx";proc datasetslib=d;quit;/* always clear the libname, as it locks the file */libnamed clear;

请注意,DBMS = XLSX不支持咱们在旧版DBMS = XLS(仅支持旧格式XLS文件)中看到的一些选项,例如STARTROW和NAMEROW。DBMS = XLSX支持GETNAMES(将工做表或范围的第一个记录视为变量名称)。

相关文章
相关标签/搜索