English (United States) Deutsch (Deutschland)

    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
    gefragt vor 18.01.2019
    Rebecca K.2
    Rebecca K.

    comments

    1 Antwort

    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

     

    beantwortet vor 22.01.2019 Benno Schönberger 30
    Benno Schönberger

    Ihre Antwort

    Um Beiträge zu erstellen, müssen Sie eingeloggt sein. Hier geht es zum Login

    Ich melde diesen Beitrag,..




    10 Moderator über verbleibende Meldungen informieren

    Ich lösche diesen Beitrag,...




    Ich melde diese Antwort,...




    10 Moderator über verbleibende Meldungen informieren

    Melden eines Beitrags

    Sie haben diesen Beitrag bereits gemeldet. Wenn Sie auf 'Meldung entfernen' klicken, wird die Anzahl der Meldungen für diesen Beitrag um eins verringert.

    Ich lösche diese Antwort, weil...