我有一个包含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列。
答案 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个数据集并准备好使用它们。