• SAS代写如何从Excel中读取一系列单元格


    电子表格不是数据库。但是,我们中的许多人使用电子表格就好像它们是数据库一样,然后当电子表格布局不支持数据库样式严格的可预测行,列和变量类型时,我们就会挣扎 - 这是分析和报告所需的基本元素。如果您使用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中定义命名范围,请突出显示要包括的单元格范围,然后只需在“名称框”中键入范围的新名称:

    然后保存Excel文件。

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

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

    对单元格区域使用Excel表示法

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

    这段代码会读它:

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

    但结果将包含许多空单元格,并且值将作为所有字符类型读取:

    通过附加编码,您可以使用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:myprojectsmiddle.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(将工作表或范围的第一个记录视为变量名称)。

    如果您有任何疑问,请在下面发表评论。 

  • 相关阅读:
    手撕RPC框架
    关于JVM的一些冷知识
    luoguP2627 修剪草坪
    [USACO16OPEN]248
    luoguP1171 售货员的难题
    luoguP2016 战略游戏
    luoguP2422 良好的感觉
    POJ1160 [IOI2000]Post Office
    luoguP2015 二叉苹果树
    BZOJ1756 小白逛公园
  • 原文地址:https://www.cnblogs.com/tecdat/p/11050959.html
Copyright © 2020-2023  润新知