Wie kann ein erweitertes Makro getokenet werden (local: dir)?

Ich weiß, mein Titel ist in dem Sinne verwirrend, dass dietokenizeer Befehl @ ist für eine Zeichenfolge angegeben.

Ich habe viele Ordner, die massive, getrennte, falsch benannte Excel-Dateien enthalten (die meisten sind von der Website entfernt). Es ist unpraktisch, sie manuell auszuwählen, daher muss ich mich auf die erweiterte Stata-Makrofunktion verlassen.local :dir, um sie zu lesen.

Mein Code sieht wie folgt aus:

foreach file of local filelist {
    import excel "`file'", clear
    sxpose, clear 
    save "`file'.dta", replace
}

Solcher Code generiert viele neuedta files und das Verzeichnis ist also voll von diesen Dateien. Ich ziehe es vor, eine einzelne neue Datendatei für das erste @ zu erstellexlsx Datei und dannappend Andere dazu imforeach loop. Also im Wesentlichen gibt es einif-else in der Schleife.

Wir brauchen einen Index des Makrosfilelist gerade erstellt, damit wir so etwas schreiben können:

token `filelist'  // filelist is created in the former code

if "`i'" == `1' {
   import excel "`file'",clear
}
else {
   append using `i',clear
}

Ich weiß, mein Code ist ineffizient und fehleranfällig: die Syntax des Ausdruckstoken 'filelist' ist auch falsch (vorausgesetzt, dassfilelist ist kein String). Ich möchte jedoch immer noch die Grundstruktur hinter meinem Pseudocode herausfinden.

Wie kann ich meinen Code korrigieren und zum Laufen bringen?

in weiterer effizienterer Ansatz ist sehr zu begrüße

Antworten auf die Frage(2)

Ihre Antwort auf die Frage