Kristina hat es genau richtig erfasst.
Du sagst, Du bist Anfänger, was bedeutet, dass mein Weg (der bei Weitem nicht der beste sein muss) recht kompliziert nachzuvollziehen ist. Leider kann ich Dir auch nicht garantieren, dass der code funktioniert, weil ich hier nur mit einem mini Dummydatensatz arbeite.
Hier die Vorbereitungsanleitung.
1. Kopiere alle Exceldateien in einen Ordner.
2. Benenne die Dateien so, dass der Dateiname dem späteren Variablennamen entspricht (z.b. defizit.xlsx). Dabei ist es wichtig, dass es sich um gültige Stata Variablennamen handelt (max. 32 Zeichen, keine Sonderzeichen und Leerzeichen, nicht mit Nummern beginnend etc.).
3. Stelle sicher, dass der Variablenname, der die Spalte der Länder kennzeichnet (in Deinem Beispiel "staat") in jeder Datei gleich geschrieben ist.
Weiter.
4. Starte Stata und kopiere den code in ein neues do-file
- Code: Alles auswählen
cap pr drop foo
pr foo
vers 12.1
syntax namelist ,Path(str) Id(name) Years(numlist)
// change to directory
cd `"`path'"'
// import the files and save in Stata format
foreach fn of loc namelist {
import excel `fn' ,first clear
unab vars : *
gettoken dump vars : vars
loc newnames : subinstr loc years " " " `fn'" ,all
loc newnames `fn'`newnames'
ren (`vars')(`newnames')
qui sa `fn'.dta ,replace
}
// now merge files
gettoken firstfile namelist : namelist
qui u `firstfile'.dta ,clear
foreach fn of loc namelist {
qui mer 1:1 `id' using `fn'.dta
cap drop _mer
erase `fn'.dta
}
erase `firstfile'.dta
// reshape long
qui reshape long `firstfile' `namelist' ,i(`id')
end
5. Lass den kompletten code einmal durchlaufen (Strg + D).
6. Tippe (in der command line oder einem neuen do-file)
- Code: Alles auswählen
foo <namelist> ,p(<pfad>) id(<id>) y(<jahre>)
wobei Du
6a. <namelist> durch die Liste der Variablennamen (Defizit etc. ohen Endung), die gleichzeitig die Dateinamen der Exceldateien darstellen ersetzt. Gib hier nicht den Namen Deiner abhängigen Variable an, die behandeln wir später.
6b. <pfad> durch den Ort der Dateien (also den Ort des neu angelegten Ordners) erstezt (z.B C:/Dokumente und Einstellungen/benutzer/Desktop/meine daten). Anführungszeichen sind nicht nötig.
6c. <id> durch den Namen der die Staaten kennzeichnet (z.B. staat) ersetzt.
6d. <jahre> durch die Jahre in der richtigen Reihenfolge ersetzt. In Deinem Beispiel sind die Jahre rückwärts (von 2008 bis 1960) angeordnet. In diesem Fall würdest Du -y(2008/1960)- schrieben.
7. Speicher den Datensatz.
- Code: Alles auswählen
sa <name>.dta
wobei <name> durch einen beliebigen Dateinamen ersetzt wird.
Deine abhängige Variable sollte nun mit folgenden Zeilen angefügt werden können.
- Code: Alles auswählen
import excel <excellname> ,first clear
mer 1:m <id> using <name>
drop _mer
Dabei ist <excellname> der Name des Excelldatensatzes, <id> analog zu oben und <name> der im Schritt zuvor gewählte Dateiname.
Stata is an invented word, not an acronym, and should not appear with all letters capitalized: please write “Stata”, not “STATA”.