SC6 - Dubletten bei mergen von Teildatensätzen

Liebe NEPSforum-NutzerInnen,

für meine Bachelorarbeit verwende ich die Daten der SC6 und benötige unterschiedliche Variablen aus vier Teildatensätzen. Beim Mergen haben sich einige "Probleme" ergeben.

Zuvor ein paar Infos zu meiner Fragestellung und der Analysestichprobe, die ich mit den Daten anstrebe. Ich untersuche den Einfluss der Digitalkompetenz (ICT Literacy Test) auf das Netto-Erwerbseinkommen einer Person und welchen zusätzlichen Einfluss dabei die individuelle Bildung, das Alter, das Geschelcht, der aktueller Beruf, der Migrationshintergrund und die Absolvierung einer Weiterbildung auf diesen Zusammenhang nehmen. Aufgrunddessen soll meine Analysestichprobe nur Personen beinhalten, die diese Merkmale erfüllen.

 

Ich habe dafür diese Teildatensätze Schritt für Schritt gemergt: 

SC6_Basics_D_9-0-1.dta;

SC6_xTargetCompetencies_D_9-0-1.dta, 

SC6_spEmp_D_9-0-1.dta und 

SC6_spCourses_D_9-0-1.dta.

Mit Hilfe der Merging Matrix (https://www.neps-data.de/de-de/datenzentrum/datenunddokumentation/startkohorteerwachsene/dokumentation.aspx), die ihr auf der Website zu Verfügung stellt, habe ich die vier Teildatensätze gemergt. Mein Hauptproblem: beim 2. Mergen bilden sich dann Dubletten.

Folgende Fragen habe ich zum untern angehängten Do-File:

  1. Zuerst, ist der von mir gewählte Ansatz zu mergen korrekt?
  2. Warum passiert das mit den Dubletten? Liegt es daran, dass spEmp und spCourses Episodendaten beinhalten und wie gehe ich damit um?
  3. Wie kann ich, dass sich Doubletten bilden, im Voraus verhindern?
    1. Alternativ: wie kann ich die Dubletten löschen und den Überblick darüber behalten, was gelöscht wird?
  4. Wäre Reshapen von long auf wide eine Option, um die Dubletten verschwinden zu lassen?
  5. Oder ist "duplicates drop ID_t, force" eine Option?
    1. Wenn ja, wann ist es am sinnvollsten dies zu tun? - Direkt nach dem mergen oder nachdem die benötigten Variablen recodiert und die Missings gedropt wurden? Ich habe nämlich festgestellt, dass die Fallzahlen stark variieren, je nach dem, wann ich die Dubletten droppe.

Ich hoffe, meine Fragen sind nachvollziehbar.

Vielen Dank im Voraus für die Hilfe!

Liebe Grüße

Rebecca

 

use SC6_Basics_D_9-0-1.dta /* use as master file*/


*** 1. Merge: Basics und xTargetCompetencies ***


merge 1:1 ID_t using "HIER EIGNEN PFAD EINFÜGEN\SC6_xTargetCompetencies_D_9-0-1.dta" 

keep ID_t t70000y t700001 tx29005 tx28101 tx29068 ica5001x_c ica5003x_c ica5005x_c ///
ica5004s_c ica5006x_c ica5007x_c ica5008x_c ica5010x_c ica5017s_c ica5018s_c ica5015s_c ///
ica5019x_c ica5016s_c ica5020s_c ica5023x_c ica5027x_c ica5026x_c ica5029x_c ica5028x_c ///
ica5030x_c icg9119x_sc6a5_c ica5050s_c icg9122x_sc6a5_c ica5047s_c ica5046x_c ica5021s_c ///
ica5052s_c ica5054x_c ica5057x_c ica5_sc1


*** 2. Merge: Basics_XTargetCompetencies.dta MIT spEmp.dta ***

merge 1:m ID_t using "HIER EIGNEN PFAD EINFÜGEN\SC6_spEmp_D_9-0-1.dta"

keep ID_t wave splink t70000y t700001 tx29005 tx28101 tx29068 ica5001x_c ///
ica5003x_c ica5005x_c ica5004s_c ica5006x_c ica5007x_c ica5008x_c ica5010x_c ///
ica5017s_c ica5018s_c ica5015s_c ica5019x_c ica5016s_c ica5020s_c ica5023x_c ///
ica5027x_c ica5026x_c ica5029x_c ica5028x_c ica5030x_c icg9119x_sc6a5_c ica5050s_c ///
icg9122x_sc6a5_c ica5047s_c ica5046x_c ica5021s_c ica5052s_c ica5054x_c ica5057x_c ///
ica5_sc1 ts23410

*Hiernach entstehen dann die Dubletten

*** 3. Merge: Basics_xTargetCompetencies_spEmp.dta MIT spCourses.dta ***

merge m:1 ID_t wave splink using "HIER EIGNEN PFAD EINFÜGEN\SC6_spCourses_D_9-0-1.dta"

keep ID_t wave splink t70000y t700001 tx29005 tx28101 tx29068 ica5001x_c ///
ica5003x_c ica5005x_c ica5004s_c ica5006x_c ica5007x_c ica5008x_c ica5010x_c ///
ica5017s_c ica5018s_c ica5015s_c ica5019x_c ica5016s_c ica5020s_c ica5023x_c ///
ica5027x_c ica5026x_c ica5029x_c ica5028x_c ica5030x_c icg9119x_sc6a5_c ica5050s_c ///
icg9122x_sc6a5_c ica5047s_c ica5046x_c ica5021s_c ica5052s_c ica5054x_c ica5057x_c ///
ica5_sc1 ts23410 t272011_g13w1

/*Duplicates über ID_t löschen

duplicates report ID_t
duplicates drop ID_t, force
duplicates report ID_t 

Dazu die Frage, ob die Dubletten direkt nach dem Mergen gedroppt werden sollten
oder erst nachdem ich die Variablen recodiert und die Missing Values gelöscht habe?*/

****************
* Ende Do-File *
****************

save Datensatz_merged.dta
log close 
exit
end of do-file

Liebe Rebecca,

prinzipiell ist es immer eine gute Idee, sich erst alle verwendeten Datensätze einzeln vorzubereiten und dann erst am Schluß komplett zu mergen, wenn man sichergestellt hat, dass alles passt.

Ich versuche mal, dir ein wenig Hilfestellung dabei zu geben und deine Fragen zu beantworten:

Dein Mergeansatz ist leider in keinster Weise so korrekt, da du versuchst, Informationen aus den Spellfiles ohne weitere Aufbereitung an den Basisdatensatz zu spielen, der lediglich eine Zeile pro Person umfasst. Immer dann, wenn du versuchst, Informationen aus den Spellfiles an die Längsschnittfiles anzumergen, musst du dir vorher ganz genau überlegen, welche Informationen du denn jetzt wie an was heranspielen möchtest. Ein merge über ID_t ist hier zwar technisch möglich, aber für deine Analysezwecke nicht der richtige Ansatz. Da du ja jeweils aus spEmp und spCourses nur eine einzelne Information benötigst (wenn ich das deiner Syntax richtig enthehme), solltest du erstmal nur diese Information im jeweiligen Datensatz daraufhin prüfen, ob die Werte überhaupt so vorliegen, dass du sie sinnvoll an den Basics-Datensatz heranspielen kannst. Innerhalb der Spelldatensätze solltest du dann (sofern du nicht an den einzelnen Werten der Teilspells interessiert bist) immer nur diejenigen Fälle mit subspell ==0 behalten und alle anderen wegwerfen. Jetzt hast du allerdings immer noch mehrere mögliche Spelleinträge, die von einer Person innerhalb einer Befragung berichtet worden sein können. Und genau daher kommen auch deine Dupletten, wenn du das einfach "blind" mergest. Es lohnt sich also, im Vorfeld darüber nachzudenken, welche dieser Zeilen man denn eigentlich jetzt in seinem Datensatz haben möchte (die erste, die letzte, diejenige mit dem letzten gültigen Wert etc). Daher würde ich den Spelldatensatz erst mal so aufbereiten, dass er diese Informationen liefert, die ich auch haben möchte. Wenn du also lediglich die Nettoeinkommen an den Basisdatensatz heranspielen möchtest, benötigst du für jede Person nur jeweils genau EINE Einkommensinformation. Da bietet sich an, den Emp-Datensatz auf die Information aus dem letztberichteten Spell zu beschränken oder auf den letztberichteten gültigen Wert. Was davon für deine Analyse sinnvoller ist, ist eine Annahme, die du selbst treffen musst.

Und wenn du deine Spellfiles ordnungsgemäß aufbereitet hast und dann alle Einzeldaten zusammenbringst, kommt es normalerweise auch nicht mehr zu Dubletten. Sollten diese jedoch auftreten, hat man vermutlich in den allermeisten Fällen etwas an der vorbereitenden Datenaufbereitung nicht ganz richtig gemacht oder übersehen. Die simple Lösung, diese dann im Nachhinein zu löschen, ist natürlich ziemlich verführerisch, aber gleichzeitig auch das wissenschaftlich schlechteste, was man machen kann und sollte daher niemals eine Option sein, solange man sich nicht ganz sicher ist, was man da macht und warum.

 

Viele Grüße,

Benno Schönberger