reshapen und mergen zweier Datensätze

Allgemeine Fragen rund um Statistik mit Stata.

reshapen und mergen zweier Datensätze

Beitragvon LeaCarlotta13 » Mo 25. Apr 2022, 12:09

Hallo liebes Forum,

ich habe eine Frage bezüglich des reshapens und mergens von Datensätzen.

Ich arbeite in meiner Abschlussarbeit mit den SOEP Core Daten, insbesondere mit 2 Datensätzen (pl und biol), die im long-format sind. Da ich eine Querschnittsanalyse machen möchte, habe ich mit Hilfe des reshape-Befehls bereits das Format in wide umgeändert:

reshape wide $varlist_w, i(pid) j(syear)

Meine Betreuerin hat vorgeschlagen, mit Hilfe eines tempfiles meinen neuen Datensatz zu speichern:
tempfile pl
save `pl'

Das habe ich mit dem anderen Datensatz biol ebenfalls gemacht.


Nun möchte ich beide Datensätze mergen :geek: . Ich habe daher versucht pl und biol im neuen Format zu speichern, um diese dann im merge-Befehl ansprechen zu können. Das hat jedoch nicht geklappt. Wie geht man denn am besten vor, um Dateien im neuen Format zu speichern? Oder ist das speichern nicht notwendig?

Ich danke euch jetzt schon mal!

Liebe Grüße
Lea
LeaCarlotta13
 
Beiträge: 10
Registriert: Mo 25. Apr 2022, 11:48
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: reshapen und mergen zweier Datensätze

Beitragvon Staxa » Mo 25. Apr 2022, 12:59

Was genau hat nicht geklappt? Wie lautet die Fehlermeldung? Wenn du mit Tempfiles arbeitest musst du beachten, dass du deinen ganzen Code im Do-file schreibst und dann zusammen ausführst. Die Tempfiles "leben" nur während der Ausführung und werden danach sofort gelöscht. Du kannst den Code also nicht schrittweise durchlaufen lassen.
Stata für Anfänger: www.statabook.com
Staxa
 
Beiträge: 679
Registriert: Di 27. Feb 2018, 12:56
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: reshapen und mergen zweier Datensätze

Beitragvon LeaCarlotta13 » Di 26. Apr 2022, 14:42

Nicht geklappt war vielleicht falsch formuliert. Es geht eher darum, das neue (gereshapete) Format zu speichern. Ich habe es zuerst mit save "pl_reshape.dta" versucht. Das Speichern dauert jedoch extrem lange und irgendwann hängt sich Stata auf. Im Moment arbeitet Stata bereits seit gut einer halben Stunde.
Da ich aber bei zwei Datensätzen das Format verändern muss, bevor ich sie mergen kann, muss ich sie ja irgendwie speichern. Gibt es dazu Alternativen zu "save"?
Bzw. In meinen Datensätzen sind ja Daten von 1984 bis 2019 enthalten. Kann ich diese Jahre droppen, die ich nicht brauche - vielleicht würde das den Speicherprozess beschleunigen.

Vielen Dank und lieber Gruß
Lea
LeaCarlotta13
 
Beiträge: 10
Registriert: Mo 25. Apr 2022, 11:48
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: reshapen und mergen zweier Datensätze

Beitragvon Staxa » Mi 27. Apr 2022, 11:37

Also speichern an sich sollte eigentlich nie so lange dauern. Wie groß sind die Datensätze? Du kannst natürlich alles löschen, was du nicht brauchst und auch den Befehl compress durchlaufen vorher. Falls das mergen an sich langsam dauert gibt es auch ados die das besser machen, siehe etwa:

https://www.stata.com/meeting/baltimore ... orreia.pdf

Aber speichern eine halbe Stunde? Da ist definitiv was faul. Ich habe Datensätze mit 500mb die in 5 sec gespeichert sind.
Stata für Anfänger: www.statabook.com
Staxa
 
Beiträge: 679
Registriert: Di 27. Feb 2018, 12:56
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: reshapen und mergen zweier Datensätze

Beitragvon LeaCarlotta13 » Sa 11. Jun 2022, 15:15

Hallo,



danke noch mal für die Antwort, es hatte dann geklappt zum speichern

ich habe noch einmal eine Frage, diesmal zum reshapen.

ich muss zu meinem bestehenden Datensatz noch ein paar wenige Variablen aus einem anderen Datensatz hinzufügen. Ich bin wie zuvor auch die gleichen Schritte gegangen:





global varlist maincareref extcare1 extcare2 extcare3 carebfa noinst1 noinst2 noinst3 noinst4 noinst5 noinst6 noinst7 noinst8 noinst9 noinst10 noinst11 noinst12 noinst13 care1h care2h care3h care4h care5h care6h care7h care8h care9h care10h care11h care12h care22h care23h care25h care24h care86h care86d asclcare asclcareh age



foreach var of varlist $varlist{

rename `var' `var'_w

}



global varlist_w maincareref_w extcare1_w extcare2_w extcare3_w carebfa_w noinst1_w noinst2_w noinst3_w noinst4_w noinst5_w noinst6_w noinst7_w noinst8_w noinst9_w noinst10_w noinst11_w noinst12_w noinst13_w care1h_w care2h_w care3h_w care4h_w care5h_w care6h_w care7h_w care8h_w care9h_w care10h_w care11h_w care12h_w care22h_w care23h_w care25h_w care24h_w care86h_w care86d_w asclcare_w asclcareh_w age_w



sort pid



reshape wide $varlist_w, i(pid) j(syear)





Ich habe auch bereits duplikate rausgeschmissen. Jetzt erscheint mir die Fehlermeldung:



reshape wide $varlist_w, i(pid) j(syear)

(note: j = 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019)

values of variable syear not unique within pid





Your data are currently long. You are performing a reshape wide. You specified i(pid) and j(syear). There are

observations within i(pid) with the same value of j(syear). In the long data, variables i() and j() together must

uniquely identify the observations.



long wide

+---------------+ +------------------+

| i j a b | | i a1 a2 b1 b2 |

|---------------| <--- reshape ---> |------------------|

| 1 1 1 2 | | 1 1 3 2 4 |

| 1 2 3 4 | | 2 5 7 6 8 |

| 2 1 5 6 | +------------------+

| 2 2 7 8 |

+---------------+

Type reshape error for a list of the problem variables.





Ich dachte, dass sich das Problem durch das Löschen von Duplikaten eigentlich erledigt und weis jetzt ehrlich nicht weiter.



Danke für jede Hilfe!



Liebe Grüße

Lea
LeaCarlotta13
 
Beiträge: 10
Registriert: Mo 25. Apr 2022, 11:48
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: reshapen und mergen zweier Datensätze

Beitragvon Staxa » Sa 11. Jun 2022, 18:09

Also die Fehlermeldung sagt ja aus, dass es doppelte Werte gibt innerhalb einer ID. Also z.B. könnte es sein, dass bei ID 374 es dann 2 Einträge mit dem Jahr 2010 gibt. Die Frage ist, was genau passiert da. Hast du mal in die Daten geschaut? Kommt das oft vor oder sind es ganz seltene Fehler? Weil: wenn es diese doppelten Einträge gibt: welcher ist der korrekte Eintrag und welcher der falsche?
Stata für Anfänger: www.statabook.com
Staxa
 
Beiträge: 679
Registriert: Di 27. Feb 2018, 12:56
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: reshapen und mergen zweier Datensätze

Beitragvon LeaCarlotta13 » Di 14. Jun 2022, 17:09

Hallo Staxa,

das war ein guter Gedanke. Ich habe mir die Daten noch mal angesehen. Und tatsächlich kommen manche IDS häufiger vor. Zum Beispiel 7 mal die 23908, jeweils für die Jahre 2003, 3005, 2008, 2012 und 2 mal 2010. Allerdings kann man die eben nicht einfach löschen, weil sie in anderen Variablen z.T. unterschiedliche Werte annehmen:

syear pid age_w
2006 13805 9
2010 23908 86
2012 23908 110
2003 23908 2
2005 23908 26
2008 23908 62
2010 23908 86




syear pid age_w
2008 362505 2
2011 362505 36
2014 362505 72
2016 362505 93
2018 362505 117
2016 362505 95


Meinst du, dass ist dann das Problem?
In der Handreichung zu den Daten steht, dass die PIDS öfter vorkommen können. Aber ich weis nicht, wie ich damit umgehen soll. Vielleicht hat jemand eine Lösung
VL Lea
LeaCarlotta13
 
Beiträge: 10
Registriert: Mo 25. Apr 2022, 11:48
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: reshapen und mergen zweier Datensätze

Beitragvon Staxa » Di 14. Jun 2022, 18:10

Das muss der Datenherausgeber erklären. Manchmal gibt es eine Variable, die angibt, welche Datenzeile zur Nutzung "empfohlen" wird. Wer die Daten nicht kennt kann hier nur raten.
Stata für Anfänger: www.statabook.com
Staxa
 
Beiträge: 679
Registriert: Di 27. Feb 2018, 12:56
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Statistik allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron