Ich habe eine Excel-Registerkarte mit mehreren Abschnitten vonverschiedene Daten. Beispielsweise ist Zeile 1-57 eine normale Excel-Datentabelle mit den jeweiligen Feldnamen, aber in Zeile 61 (blaue Zeile am unteren Rand des Screenshots) beginnt ein neuer Tabellendatenabschnitt. Dies wiederholt sich für ein Paar verschiedene Tabellendatenabschnitte innerhalb derselben Excel-Registerkarte.
Ich möchte diese Excel-Registerkarte in SAS importieren.Wenn Sie dann jeden Tabellendatenabschnitt als eigene Tabelle ausgeben, habe ich darüber nachgedacht, den Namen des blauen Zeilenabschnitts zu verwenden, um festzustellen, dass es sich um den Beginn eines neuen Abschnitts handelt es in SAS-Codes.
Danke im Voraus.
Antworten:
0 für die Antwort № 1Zwei Ideen für dich. Wenn es sich um eine small-ish-Datei handelt und Sie alle Abschnittskopfnamen kennen, können Sie Folgendes tun:
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;
Eine andere Sache, die Sie tun können, wenn Sie wissen, wo alles istDie Umbrüche bestehen darin, mit proc import stückweise anzugehen und SAS mit dem Bereich mitzuteilen, wo jede Tabelle beginnt und endet (in diesem Beispiel wird davon ausgegangen, dass Ihre Excel-Tabelle in Spalte Z geht und Ihre zweite Tabelle in Zeile 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;