5  Dateien- und DoFile-Verwaltung

5.1 dir - alles einlesen

glo pfad "D:\oCloud\Home-Cloud\Lehre\BIBB\StataProgBIBB\projekt"

global filelist: dir . files "*.*"          //Lister aller Dateien
mac l filelist

global dtalist: dir "${pfad}" files "baua*.dta" // Liste aller .dta-Dateien
mac l dtalist


loc usefile `: word 1 of ${dtalist}'                // erster Eintrag aus der Liste
dis "${pfad}/`usefile'"

use "${pfad}/`usefile'", clear                      // dta laden
loc n_datasets : list sizeof global(dtalist)        // anzahl  dta einträge
foreach i of numlist 2(1)`n_datasets' {
    loc appendfile `: word `i' of ${dtalist}'       // name aus list aufrufen
    qui append using "${pfad}/`appendfile'"          // append
    dis "`appendfile' appended"                           // Kontrolle
}
    

, respectcase: global dtalist: dir "${pfad}" files "baua*.dta , respectcase" würde “BAUA.dta” ignorieren.

5.1.1 copy

Mit copy können wir Dateien kopieren.

loc usefile `: word 1 of ${dtalist}'                // erster Eintrag aus der Liste
loc copyfile "copy_`usefile'"
dis "`usefile'"
dis "`copyfile'"

copy ${pfad}/`usefile' ${pfad}/`copyfile' , replace

// hat das geklappt?
global dtalist2: dir "${pfad}" files "*baua*.dta" // Liste aller .dta-Dateien
mac l dtalist
mac l dtalist2

5.1.2 erase

Mit erase können wir Dateien löschen.

loc usefile `: word 1 of ${dtalist}'                // erster Eintrag aus der Liste
loc copyfile "copy_`usefile'"
erase ${pfad}/`copyfile'

// hat auch das geklappt?
global dtalist3: dir "${pfad}" files "*baua*.dta" // Liste aller .dta-Dateien
mac l dtalist
mac l dtalist2
mac l dtalist3

Übung


5.2 Verzeichnisse & DoFiles erstellen

Mit mkdir können wir Verzeichnisse erstellen:

global pfad "D:\oCloud\Home-Cloud\Lehre\BIBB\StataProgBIBB\projekt"
mkdir   "${pfad}/data"
mkdir   "${pfad}/log"
mkdir   "${pfad}/graph"
mkdir   "${pfad}/results"
mkdir   "${pfad}/tables"

file können wir nutzen, um ein DoFile mit globals zu erstellen (oder natürlich auch locals oder allen anderen Informationen):

*erstelle doFile fuer macros -> kurzes doFile um Pfade in Schleifen richtig zu setzen, wird dann in Schleifen immer aufgerufen
file open macros using ${prog}\macrodofile.do, write replace
file write macros "glo pfad     ${pfad}   "     _n
file write macros "glo orig     ${orig}   "     _n
file write macros "glo data     ${data}   "     _n
file write macros "glo log      ${log}    "     _n
file write macros "glo res      ${results}"     _n
file write macros "glo graph    ${graph}  "     _n
file write macros "glo prog     ${prog}   "     _n
file close macros 

5.3 Master DoFile

5.3.1 DoFile mit Argumenten starten

Ein DoFile kann auch direkt aus einem Master-DoFile gestartet werden. Werte, die wir danach angeben, können im DoFile mit der Angabe der Position abgerufen werden:

do "${prog}/051_DoFile.do" 2
use "${orig}/BIBBBAuA_2018_suf1.0.dta", clear
dis "Auszählung für `1'"
tab S1 if m1202 == `1'
do "${prog}/051_DoFile2.do" 4 2 mobil
local ausb `1'
local gend `2'
local var  `3'

use "${orig}/BIBBBAuA_2018_suf1.0.dta", clear
dis "Auszählung für Ausbildung = `ausb' & Geschlecht = `gend'"
tab gkpol if m1202 == `ausb' & S1 == `gend'

tab gkpol `var' if m1202 == `ausb' & S1 == `gend'

5.3.2 in neuer Session starten

cd ${prog}
winexec `c(sysdir_stata)'StataSE-64.exe do "${prog}/052_DoFile1.do" 4 2 mobil

Startet 052_DoFile1.do in einer neuen Session.

Achtung: hier sind dann auch die globals, locals usw. weg. Um die globals zu übernehmen, muss dann ein macrodofile eingebunden werden.

5.3.3 mehrere Sessions starten

forvalues s = 1/2{
    cd ${prog}
    winexec `c(sysdir_stata)'StataSE-64.exe do "${prog}/052_DoFile1.do" 4 `s' mobil
}

Übung


5.4 Übungen

5.4.1 Übung

  • Im zip-Ordner dir_übung.zip finden sich auch .csv-Dateien. Lesen Sie diese nach der Reihe ein und speichern Sie die Daten als .dta - danach können alle Datensätze zusammengefügt werden.
    • Entpacken Sie die Dateien aus dem zip-Ordner in passendes ein Verzeichnis (bspw., das welches Sie mit $data ansteuern).
    • Verwenden Sie also die filelist statt der dtalist von oben.
    • Lesen Sie mit import delimited ".... baua3.csv", delimiter(";") encoding(ISO-8859-2) clear die csv-Dateien jeweils ein und legen Sie als dta ab.
    • Anschließend können Sie den dta-Schleife von oben verwenden, um alle Teildatensätze einzulesen. Wie viele Fälle haben Sie im Datensatz?
  • Kopieren Sie eine der Dateien und löschen Sie sie anschließend wieder.

5.4.2 Übung

  • Starten Sie getrennte Auswertungen für Männer und Frauen für das Merkmal zpalter, bspw. mit summary und stoßen Sie dieses mit do ... an.