Erste Zeile aus Excel wird nicht als Variablen übernommen

Fragen zu Stata Syntax und Do-Files.

Re: Erste Zeile aus Excel wird nicht als Variablen übernomme

Beitragvon Emolchie » Fr 26. Apr 2013, 14:27

Stimmt, das von mir beschriebene Problem trat wie gesagt nur bei einer Datei auf. Hatte nicht daran gedacht, dass es vielleicht besser gewesen wäre, von dieser den screenshot zu machen. Mach ich nachher noch.
Zu deinem Lösungsvorschlag, hört sich sehr gut an, nur Punkt 2 erschließt sich mir nicht. Also meinst du ich sollte z.B. einfach für alle Sheets nur den Unternehmensnamen ohne den Zusatz zur Variablen nehmen? Wenn ich diese einzelne Datei ins Panelformat bringe, wird dann dieser "Zusatz" als eigene Variable gespeichert, sehe ich das richtig?
Werde das auf jeden Fall heute oder spätestens morgen mal machen :-)
Danke schon mal :-)
Emolchie
 
Beiträge: 21
Registriert: Mi 24. Apr 2013, 18:23
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Erste Zeile aus Excel wird nicht als Variablen übernomme

Beitragvon daniel » Fr 26. Apr 2013, 14:37

Was ist denn ein "Zusatz zur Variable"? Was meinst du damit?
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Erste Zeile aus Excel wird nicht als Variablen übernomme

Beitragvon Emolchie » Sa 27. Apr 2013, 17:52

Damit meine ich bei dem Screenshot z.B. das "freecashflow"
Emolchie
 
Beiträge: 21
Registriert: Mi 24. Apr 2013, 18:23
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Erste Zeile aus Excel wird nicht als Variablen übernomme

Beitragvon Emolchie » Sa 27. Apr 2013, 19:25

Also ich habe mir den anderen Beitrag zur Berechnung der Renditen angesehen.
Komme damit leider auch nicht weiter. Also wenn ich z.B. -xpose- mache, dann habe ich, wieder Thread-Steller des anderen Threads statt meinen Unternehmennamen Durchnummerierungen (was jetzt nicht schlimm wäre), aber statt der Datumsangaben eben auch v1,v2,v3.. wie er das gelöst hat steht in dem Thread ja nicht drin.
Außerdem kann ich den Datensatz ja immer noch nicht reshapen, weil ich ja trotzdem keine Identifizierungsvariable hab? Also wie komm ich von dem -xpose- Datensatz zum Paneldatensatz?

Also das ist der Screenshot von der xposten Datei und die Vorlage ist die excel Datei
(Achja und die oben genannten "Zusätze" also in dem Fall wäre es "dividenpershare" habe ich weggemacht, damit die Unternehmen alle den gleichen Namen in jeder Excel-Datei haben, also nicht "Abercrombie&fitch-freecashflow" in der einen und "Abercrombie&Fitch-dividendpershare" in der anderen)
Dateianhänge
excel.jpg
excel.jpg (210.13 KiB) 3702-mal betrachtet
xpose.jpg
xpose.jpg (138.42 KiB) 3702-mal betrachtet
Emolchie
 
Beiträge: 21
Registriert: Mi 24. Apr 2013, 18:23
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Erste Zeile aus Excel wird nicht als Variablen übernomme

Beitragvon daniel » Sa 27. Apr 2013, 21:47

Vergiss die -xpose- Idee, die bringt nicht viel. Hier ist ein code, der das Beste ist, was ich noch für Dich tun kann.

Kopier den kompletten code in ein dofile. Lass das komplette dofile ohne Unterbrechung durchlaufen. Scroll im Ausgabefenster zum Anfang und versuche Schritt für Schritt zu verstehen, was da gemacht wird. Du musst manuel die illegalen Namen (z.B. 1-800-Flowe...) ergänzen (im Beispiel v2 mit dem korrekten Namen des Unternehmes ersetzen).

Diesen Prozess musst Du nun für jedes sheet machen und am Ende alle dta files über die Variable company_str [edit: und date] mergen.

Code: Alles auswählen
// create toy dataset
clear
se more off
inp str10 name foo v2 bar
"01.01.1980" 1 2 3
"01.01.1981" 4 5 6
"01.01.1982" 7 8 9
end
l // show result

// this is what your data looks like after -insheet-ing the excel file into Stata

// get data in panel format

// create date variable
g date = date(name, "DMY")
form date %td
drop name
l // show result

// rename companies
unab varnams : * // puts all variable names into local macro varnams
loc varnams : subinstr loc varnams "date" "" // removes varname date from that list
forv j = 1/`: word count `varnams'' {
   ren `: word `j' of `varnams'' foo`j'
}
l // show result

// create pseudo-id variable
g id = _n
l // show result

// now reshape
reshape long foo ,i(id)
drop id
l // show result

// some renaming
ren _j company
ren foo whatever /* whatever is to be replaced with whatever
is recorded in that specific sheet, e.g. dividenpershare */

l // show result

// get back company names
g company_str = "`: word 1 of `varnams''" if (company == 1)
forv j = 2/`: word count `varnams'' {
   replace company_str = "`: word `j' of `varnams''" ///
   if (company == `j')
}

// clean up show result
order company date
drop company
so company_str date
l // show result
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Erste Zeile aus Excel wird nicht als Variablen übernomme

Beitragvon Emolchie » Mo 29. Apr 2013, 17:39

Hallo daniel,

habe mich jetzt hingesetzt und mit einer Freundin mehr als 3h über dem File gesessen :( Wir haben auch einige Fehler, die zwischendrin aufgetaucht sind, beheben können.
Allerdings hat es trotzdem nicht wie gewünscht funktioniert.
Ich habe jetzt 3 Spalten. Die erste Spalte "company" wird einfach durchgezählt. In der Spalte "dividendpershare" stehen Datumsangaben, aber komplett falsche. Die Spalte "date" fehlt, bzw. ist in der Spalte "company_str" ganz am Ende aufgeführt.
Hänge noch mal einen Screenshot dran.

PS: ich weiß, dass wir das Ende von deinem Code weggelassen haben. Liegt daran, weil mit deinem Ende die Fehlermeldung "variable date not found" angezeigt wurde... Vielleicht kannst du mir sagen, was ich noch ändern muss?
Dateianhänge
editor2.jpg
editor2.jpg (231.33 KiB) 3694-mal betrachtet
editor.jpg
editor.jpg (235.83 KiB) 3694-mal betrachtet
screenshot_do2.jpg
screenshot_do2.jpg (167.83 KiB) 3694-mal betrachtet
Emolchie
 
Beiträge: 21
Registriert: Mi 24. Apr 2013, 18:23
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Erste Zeile aus Excel wird nicht als Variablen übernomme

Beitragvon daniel » Di 30. Apr 2013, 10:45

Der code arbeite extrem viel mit local macros, es ist essentiell wichtig, dass der komplette code markiert und "in einem Rutsch" ausgeführt wird. Jede Unterbrechung bzw. das Ausführen von nur Teilen des codes führt zu Fehlern.

Da mein Beispiel funktioniert, ist es schwer zu sagen, was genau bei Dir/Euch falsch läuft. Welche "Fehler" habt Ihr denn korrigiert? In meinem code sind definitiv keine Fehler (wie gesagt, das Beispiel läuft einwandfrei).

Kannst Du evtl. ein log file erstellen, und das mal anhängen (Datenrechte beachten)? Verwende folgenden code (der komplett und ohne Unterbrechung ausgeführt werden muss!)

Code: Alles auswählen
cd H:/csv_ohnezusatz
se more off
log using mylog ,replace t // creates log file mylog.txt in  h:/csv_ohnezusatz
insheet using datenstream_dividendpershare_12.csv ,ddelim(";")
l // show result

// get data in panel format

// create date variable
g date = date(name, "DMY")
form date %td
drop name
l // show result

// rename companies
unab varnams : * // puts all variable names into local macro varnams
di "`varnams'"
loc varnams : subinstr loc varnams "date" "" // removes varname date from that list
forv j = 1/`: word count `varnams'' {
   ren `: word `j' of `varnams'' foo`j'
}
l // show result

// create pseudo-id variable
g psid = _n
l // show result

// now reshape
reshape long foo ,i(psid)
drop psid
l // show result

// some renaming
ren _j company
ren foo dividendpershare
l // show result

// get back company names
g company_str = "`: word 1 of `varnams''" if (company == 1)
forv j = 2/`: word count `varnams'' {
   replace company_str = "`: word `j' of `varnams''" ///
   if (company == `j')
}

// clean up and show result
order company_str date
so company date
drop company
l // show result
log c // close the log file


Häng doch bitte die Datei mylog.txt an.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Erste Zeile aus Excel wird nicht als Variablen übernomme

Beitragvon Emolchie » Do 2. Mai 2013, 12:03

Passt. Der Betreuer meiner Arbeit hat den Fehler gefunden. Musste nur die Namen der Unternehmen durch die ISIN-Nummer austauschen.
Danke für deine Hilfe :-)
Emolchie
 
Beiträge: 21
Registriert: Mi 24. Apr 2013, 18:23
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Vorherige

Zurück zu Stata Syntax

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste

cron