Import mehrerer Excel Dateien gleichzeitig

Fragen zu Stata Syntax und Do-Files.

Re: Import mehrerer Excel Dateien gleichzeitig

Beitragvon domibrown » Do 20. Sep 2012, 08:42

Auch auf die Gefahr, dass sich jetzt wieder herausstellt, dass ich gar keine Ahnung habe :) Also mit:

Code: Alles auswählen
"global Imported_FeedbackI = "Verzeichnis"

cd "$Imported_FeedbackI"
qui fs *.dta
foreach f in `r(files)' {
}


sage ich Stata zuerst er soll ins "Imported_FeedbackI" Verzeichnis springen. Danach soll durch (qui) fs .*dta jede .dta Datei im internen Speicher von Stata vermerkt? werden. Es sollten sich nun alle Dateien irgendwie in r(files) aufgelistet befinden. Mit dem Befehl foreach f in `r(files)' möchte ich dann für jede dieser vermerkten .dta Dateien eine Aktion durchführen (in meinem Fall eine Variable generieren, die eine Bedingung erfüllt):

Code: Alles auswählen
"global Imported_FeedbackI = "Verzeichnis"

cd "$Imported_FeedbackI"
qui fs *.dta
foreach f in `r(files)' {
by tnnr:  gen dup = cond(_N==1,0,_n)
}


Hier wird die Fehlermeldung "no variables defined" ausgeworfen. Ich könnte mir vorstellen, dass es daran liegt, dass zwar der Dateiname bekannt ist, allerdings keine Datensätze (damit auch keine Variablen) in Stata eingelesen wurden.

Generell würde ich gerne wissen, wie genau ich eine Schleife schreiben muss, die in jedem Datensatz (dta-Datei) eines Verzeichnisse etwas ändert (zb: gen test=1 oder drop test if = 0 oder ähnliches).

Ich hoffe das war jetzt etwas verständlicher und weniger verwirrend :) Nebenbei bemerkt muss ich sagen, dass ich durch deine Hilfe in kurzer Zeit schon richtig viel über Stata gelernt hab :). Sofern das dein Ziel ist: done

lg domi
domibrown
 
Beiträge: 18
Registriert: Do 6. Sep 2012, 09:34
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Import mehrerer Excel Dateien gleichzeitig

Beitragvon daniel » Do 20. Sep 2012, 09:26

Vorab, Du bist schon auf dem richtigen Weg. Ein paar Klenigkeiten zu Beginn, bevor ich zur Frage komme.

-fs- ist ein user-written Program (Cox, SSC(?)). Es empfiehlt sich das anzugeben, damit andere das Thea besser verfolgen können. Denn die Zeit hier ist umso besser genutzt, je mehr Leute mit ähnlichen Problemen von dieser Diskussion profitieren.

Das Gleichheitszeichen beim -global- würde ich weglassen (siehe: http://www.stata-journal.com/sjpdf.html ... num=pr0045)

Ansonsten weißt Du bereits, wo Dein "Fehler" liegt. Jetzt behebe ihn einfach. In etwa

Code: Alles auswählen
foreach f in `r(files)' {
    u "`f'" ,clear
    by tnnr:  gen dup = cond(_N==1,0,_n)
    <do other stuff>
    sa "`f'" ,replace
}


Du kannst überlegen, ob Du die files umbenennst, z.B. mit einem Prefix
Stata is an invented word, not an acronym, and should not appear with all letters capitalized: please write “Stata”, not “STATA”.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Import mehrerer Excel Dateien gleichzeitig

Beitragvon domibrown » Do 20. Sep 2012, 13:27

Du kannst überlegen, ob Du die files umbenennst, z.B. mit einem Prefix


Das funktioniert leider nicht, da die Dateinamen nicht verändert werden dürfen o.o.

Mal etwas ganz anderes. Bei deinem Programm xls2dta ist mir folgendes aufgefallen:

Code: Alles auswählen
version 12.1
clear
set more off

global Excel_Imp_FeedbackI "Adresse"
global Imported_Feedback "Adresse"

// ----------------------------------------------------  Import Excel files  ---------------------------------------------------- //
xls2dta using `"$Excel_Imp_FeedbackI"' , sa(`"$Imported_FeedbackI"') replace first
clear


Hier werden wie gewollt alle Excel files aus dem "Excel_Imp_FeedbackI" Ordner in .dta Dateien transformiert und danach im Verzeichnis "Imported_FeedbackI" gespeichert. Dummerweise ist es aber so, dass die Zeilenanzahl des ersten Excel-files über die Zeilenanzahl aller anderen umgewandelten .dta files entscheidet.

Bsp: Hat das erste file 120 Zeilen, das zweite aber nur 80, so werden nach dem Import im zweiten .dta file die Differenz der Zeilen mit "." also missings ausgefüllt. Wie es sich verhält wenn das erste Excel File nur 80, das zweite aber 120 enthält habe bis jetzt noch nicht getestet, kann ich aber jederzeit nachreichen.

lg domi
domibrown
 
Beiträge: 18
Registriert: Do 6. Sep 2012, 09:34
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Import mehrerer Excel Dateien gleichzeitig

Beitragvon daniel » Do 20. Sep 2012, 16:14

Ich kann diesen Fehler mit Beispielfiles nicht reproduzieren. Bist Du sicher, dass mit den Excel files alles stimmt? Und passiert das wirklich direkt nachdem -xls2dta- läuft, oder erst nachdem Du die einzelnen files, wie auch immer (z.B. -merge- oder -append-) zusammenführst?

Übrigens kann die option -clear- weggelassen werden, die wird ohnehin ignoriert.
Stata is an invented word, not an acronym, and should not appear with all letters capitalized: please write “Stata”, not “STATA”.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Import mehrerer Excel Dateien gleichzeitig

Beitragvon domibrown » Do 20. Sep 2012, 16:31

Möglicherweise liegt es an den Excel Dokumenten. Ich hab da Zahlen mit dem Zufallscommand generiert. Werde das direkt morgen checken und dir eine Rückmeldung geben.

lg domi
domibrown
 
Beiträge: 18
Registriert: Do 6. Sep 2012, 09:34
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Import mehrerer Excel Dateien gleichzeitig

Beitragvon domibrown » Fr 21. Sep 2012, 08:48

Es scheint wohl so zu sein, dass der Fehler mit den automatisch generierten Zeilen in den Excel sheets zusammenhängt. Sobald ich manuel neue erstelle, habe ich den Fehler nicht mehr.
domibrown
 
Beiträge: 18
Registriert: Do 6. Sep 2012, 09:34
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 1 Gast

cron