Wenn ich meine Makros zur Eingabe von Daten aus mehreren Dateien in eine SAS-Tabelle ausführen, wird jedes einzelne Dataset ersetzt Einlesen, sobald die nächste Iteration beginnt. Daher ist die letzte Datei, die ich mit der Schleife eingelesen habe, die einzige Daten, die ich in meiner Final Table übrig habe. Wie kann ich meine Ausgabetabelle am Ende jeder Lese-Iteration anhängen, um zu verhindern, dass bei jedem Wechsel zur nächsten Datei Daten verloren gehen?SAS Verwenden einer DO-Schleife zum Einlesen mehrerer Dateien, muss jedoch die Tabelle in jeder Iteration anhängen, um Datenverluste zu vermeiden
Aktuelle Code:
%let type=40;
%let year=2015;
%let months =07;
%let days = 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31;
%let filetype=.csv;
%macro import_files;
%do K=1 %to 31; /*day*/
/*Scans through Macro Variable Arrays to find current month, year and letter group*/
%let nmbr = %scan(&type,1);
%let yr=%scan(&year,1);
%let mnth=%scan(&months,1);
%let day=%scan(&days,&K);
/*Creates string variables for Export and import locations of files using macro loop variables*/
%let exportfile = "C:\Users\wwn\Documents\HistoricalRateTesting\Top&nmbr&yr&mnth&day&filetype";
%let src = "\\2119\Raw_Data\Transposed_Canvass\Top&nmbr&yr&mnth&day&filetype";
/*Imports All files in that Alpha, Year and Month Group*/
DATA work.RAW_DATA;
INFILE &src firstobs=3 LRECL=1000 DELIMITER=',' TRUNCOVER DSD;
/* informat arv_dt mmddyy10. shop_dttm DATETIME18. arv_tm time5. rtrn_tm time5.;*/
/* format shop_dttm DATETIME18. arv_tm time5. rtrn_tm time5.;*/
INPUT
city_cd : $CHAR3.
rtrn_city_cd : $CHAR3.
shop_car_type_cd : $CHAR4.
shop_rt_categ : $CHAR2.
shop_rt_type : $CHAR1.
lor : ?? BEST2.
arv_tm : ?? TIME5.
rtrn_tm : ??TIME5.
arv_dt : ?? MMDDYY10.
shop_dttm : ANYDTDTM.
Brand_ZE : ?? BEST10.2
Brand_ZI : ?? BEST10.2
Brand_ZL : ?? BEST10.2
Brand_ZD : ?? BEST10.2
Brand_AL : ?? BEST10.2
Brand_ZR : ?? BEST10.2
Brand_ET : ?? BEST10.2
Brand_ZT : ?? BEST10.2
Brand_AD : ?? BEST10.2
Brand_ZA : ?? BEST10.2
Brand_EZ : ?? BEST10.2
Brand_SX : ?? BEST10.2
Brand_FX : ?? BEST10.2
Brand_FF : ?? BEST10.2;
RUN;
%end;
%mend import_files;
%import_files;
Sie erstellen jedes Mal ein neues Dataset work.RAW_DATA auf diese Weise. Erstellen Sie es einfach einmal für k = 1 und verwenden Sie dann proc append – kl78
Vielleicht wird dies hilfreich sein. Sieht so aus, als hättest du eine Antwort auf deine Terminfrage gefunden? https://communities.sas.com/t5/SAS-Communities-Library/How-do-I-write-a-macro-to-import-multiple-text-files-that-have/ta-p/223627 – Reeza