在SAS 9.4中读取带有多个工作表的excel文件

时间:2016-06-13 21:09:58

标签: sas

我有一个包含50个工作表AB0到AB49的excel文件。每个工作表由14列组成,所有工作表中的列名相同。每张纸中的第一列从纸张1中的1到1中的数字变化。每张纸具有18262行。我需要在SAS中一起阅读所有纸张并打印出来。我需要对第5,9和10列进行描述性统计。此外,我还需要以图形的形式绘制它们的出现分布。

proc import DATAFILE = " C:\Personal\Data_2016\data_new.xlsx"
            OUT = data 
            DBMS = xlsx 
            REPLACE;
    SHEET = "AB0"
    GETNAMES = Yes;
run;

proc univariate;   
run;

在这段代码中我得到了Moments,Basic Statistical Measures,test for location; Mu = 0,分位数,极端观测值作为所有14列的输出,其中我希望所有50张纸的输出(18262(在一张纸中)*每列50个值)仅用于第5,9和10列。

2 个答案:

答案 0 :(得分:7)

您应该能够将它们组合到一个数据集中。而不是使用PROC IMPORT使用XLSX libname引擎。

 libname in xlsx  'C:\Personal\Data_2016\data_new.xlsx' ;
 data all_data;
   set in.AB0 - in.AB49 ;
 run;

您需要获得许可的PC /文件SAS / Access。但您不需要Microsoft Windows或Excel软件。

答案 1 :(得分:0)

如果您提供有关所需摘要统计信息的更多详细信息,我们可以为您提供更多帮助,但导入非常简单:

%macro import_loop;
    %do i = 0 %to 49;
        proc import datafile = "C:\Personal\Data_2016\data_new.xlsx"
            out = import_sheet&i.
            dbms = xlsx replace;
            getnames = yes;
            sheet = "Sheet&i.";
        run;
    %end;
%mend import_loop;

%import_loop;

data stack;
    set import_sheet:;
run;

现在您已经堆叠了所有50个数据集并准备好使用它们。