SC 6: Merging der drei Dateien in Startkohorte 6

Hallo,

ich habe leider ein Problem, drei do-files von der Startkohorte 6 zusammen zu mergen.
Es handelt sich um die Dateien:

  • SC6_Basics_D_10-0-1.dta
  • SC6_pTarget_D_10-0-1.dta
  • SC6_spEmp_D_10-0-1.dta

Mein bisheriger Code lautet:

clear all
set more off
capture log close
cd "LINK VON DER DATEI, IN DEM SICH DIE DATEIEN BEFINDEN"
use SC6_Basics_D_10-0-1.dta, clear

// Datei 2: SC6_pTarget_D_10-0-1.dta
*** Data > merge two datasets > one to many
merge 1:m ID_t using "SC6_pTarget_D_10-0-1.dta"
drop _merge

// Datei 3: SC6_spEmp_D_10-0-1.dta
*** Data > merge two datasets > one to many
merge 1:m ID_t using "SC6_spEmp_D_10-0-1.dta"

Ich erhalte jedoch den Fehler: " variable ID_t does not uniquely identify observations in the master data"

Kann mir jemand dabei helfen bitte? Wie kann ich diesem Problem entgehen?

Hi!
Dein Problem hier ist, dass du drei Datensätze mit unterschiedlicher Struktur zusammenmergen willst:

  • eine Zeile in Basics entspricht genau einer Person
  • eine Zeile in pTarget entspricht einer Welle einer Person. Eine Person hat also mehrere Zeilen (nämlich soviele wie Wellen).
  • eine Zeile in spEmp entspricht einer (Sub-)Episode einer Person. Im Beispiel hat also eine Person soviele Zeilen wie Erwerbsepisoden (vereinfacht ausgedrückt).

Meine Empfehlung wäre, dass du dir nochmal den Abschnitt im Datenmanual der SC6 (Kapitel 4) zu den unterschiedlichen Datenformat anschaust. Dann würde ich so vorgehen:

  1. vergiss Basics, dieser Datensatz ist nur für eine erste Übersicht gedacht
  2. Starte mit CohortProfile.
  3. Merge dir Informationen aus pTarget an den Datensatz (die beiden Datensätze haben die gleiche Struktur, ein 1:1 merge über ID_t und wave ist also möglich)
  4. Extrahiere Information aus spEmp in der Art, dass du entweder Querschnitts- oder Panelinformationen vorliegen hast (also keine Episodenstruktur mehr)
  5. Merge dieses Extrakt dann auch an CohortProfile (auch wieder 1:1)

Beispiele, wie so etwas geht, findest du im oben zitierten Datenmanual. Um Punkt 4 umzusetzen hilft dir vielleicht das Beispiel des Datensatzes spPartner.

Gutes Gelingen weiterhin!
Tobias

Hallo Tobias,

ich möchte im Prinzip genau das machen. Ich komme bis Schritt 3, weiß aber nicht wie ich die Variablen aus dem spEmp Datensatz extrahieren soll und wie ich das dann mergen soll. Ich möchte die Panelinformationen herausfiltern von der Variable ts23201_g9
Muss ich die Daten aus dem ersten merge in einem neuen Datensatz speichern?
Das habe ich bis jetzt:

nepsuse "CohortProfile", clear

merge 1:1 ID_t wave using "pTarget", keepusing(tx20001 tx20002 tx20003 t514009 t700001) nogen assert(master match)

save "Cohort", replace

tempfile emp
nepsuse ID_t wave splink subspell ts23201_g9 using "spEmp" , clear

keep if subspell==0
drop subspell

merge 1:m ID_t wave splink subspell ts23201_g9 using "Cohort"

Das ist wahrscheinlich alles nicht richtig aber ich bin noch relativ neu bei Stata und sitze schon den ganzen Tag daran
Liebe Grüße
Carina

Hi Carina!

Das sieht schon alles gar nicht so schlecht aus, so würde ich das auch machen. Was dir jetzt noch fehlt, ist eine Aggregation der Episoden in spEmp auf einen Wert pro Welle. Der Datensatz selbst enthält ja mehrere Episoden pro Person, auch unter Umständen zeitgleich, die einer Welle zugeordnet werden könnten.
Das heißt, du brauchst noch ein paar Zeilen Syntax nach dem „drop subspell“ (und kannst dann, wenn alles richtig läuft, abschliessen mit:

merge 1:1 ID_t wave using "Cohort"

Schau dir mal diesen Post an, da hat mein Kollege das trefflich erklärt: