我有一个带有多个不同数据部分的Excel选项卡。例如,第1-57行是普通的Excel数据表,带有相应的字段名称,但在第61行(屏幕截图底部的蓝色行)中,新的表格数据部分开始。这会在同一个excel选项卡中重复几个不同的表格数据部分。
我想将这个excel选项卡导入SAS,然后将每个表格数据部分输出为它自己的表格,我考虑使用蓝色部分名称来识别它是新部分的开头,但是我我不确定如何使用此方法并将其转换为SAS代码。
提前致谢。
答案 0 :(得分:0)
两个想法。首先,如果它是一个小文件并且您知道所有节标题名称,则可以执行以下操作:
data example;
input id $ var1 - var5;
datalines;
NameA . . . . .
A1 11 11 21 24 14
A2 9 8 1 2 3
A3 4 4 3 4 3
A4 2 9 1 2 4
Total 26 32 26 32 24
"" . . . . .
NameB . . . . .
B1 3166 4135 1186 3775 5641
run;
data step1;
set example;
retain tablenum 0;
if id in ("NameA", "NameB", "NameC") then tablenum + 1;
run;
data table1 table2 /*table... all the way to table N*/;
set step1;
select (tablenum);
when (1) do; output table1; end;
when (2) do; output table2; end;
*when (N) do; *output tableN; *end;
end;
run;
如果您知道所有中断的位置,那么您可以做的另一件事是使用proc导入分段处理它,并使用范围告诉SAS每个表的开始和停止位置(此示例假设您的Excel电子表格转到Z列和你的第二张表转到第140行:
PROC IMPORT OUT= WORK.tableA DATAFILE= "C:\xlsfile.xlsx"
DBMS=EXCEL REPLACE; Range = "SheetName$A1:Z57";
RUN;
PROC IMPORT OUT= WORK.tableB DATAFILE= "C:\xlsfile.xlsx"
DBMS=EXCEL REPLACE; Range = "SheetName$A61:Z140";
RUN;