Mergng von Datensätzen über Teilnehmer ID
Verfasst: Mo Sep 02, 2019 7:03 pm
Hallo alle zusammen,
Ich würde gern meine Merging-Strategie optimieren. Ich habe bei einer Untersuchung eine Vorher und Nachher-Befragung durchgeführt und habe die Daten nun nach Teilnehmer-ID gematcht. Man verliert dabei natürlich eine Hand voll Daten, da es Personen gibt, die nur bei der Vorher- bzw. nur bei der Nachher-Befragung teilgenommen haben. Zudem kann man bei einer visuellen Inspektion der Teilnehmer-IDs stark vermuten, dass manche Daten aufgrund von Tippfehlern in der ID nicht gematcht werden konnten. Zum Beispiel gibt es bei der Vorher-Erhebung eine ID mit SAJM27 und bei der Nachher-Befragung eine ID mit SAJN27. Es gibt auch noch andere Varianten. Meine Frage wäre, wie ich R anleiten kann ID's, die sich nur in einem Buchstaben unterscheiden, dennoch zu matchen, wenn zum Beispiel Alter und Geschlecht trotzdem übereinstimmt.
Wie könnte ich zum Beispiel über das Schreiben einer Funktion mir alle Fälle ausgeben lassen, die hinsichtlich ihrer ID ähnlich genug sind und Alter und Geschlecht auch übereinstimmen und anschließend über eine if-Funktion automatisch mergen lassen kann, wenn bestimmte Kriterien erfüllt sind?
Kriterien:
1) Mindestens vier der sechs Buchstaben bzw. Ziffern stimmen überein und stehen an der richtigen Stelle (Reihenfolge) (Bsp.: SAJM27 --> SAIN27) und
2) mindestens einer des/der "falschen" Buchstabens/Ziffer stimmt wenigstens inhaltlich überein (z.B. SAJM27 --> SAJM02)
3) Alter (+- 1) und Geschlecht stimmen überein
Alternativ:
1) Mindestens drei der vier Buchstaben stimmen überein
2) Mindestens eine der zwei Ziffern stimmen überein
3) Alter (+-1) und Geschlecht stimmen überein
Wie kann ich das programmieren? Jeder Hinweiß wäre toll!
Kliene Anmerkung:
Das merging habe ich mit dem Befehl "merge" vorgenommen.
dat_all<- merge(dat1,dat2,by="ID", all=T) #Auflistung aller Daten, auch diejenigen, die sich nicht matchen lassen
dat<- merge(dat1,dat2,by="ID", all=F) #nur vollständige Datensätze (Teilnahme bei Vorher- und Nachher-Befragung; ohne Berücksichtigung von Tippfehlern)
Schonmal vielen Dank!
Ich würde gern meine Merging-Strategie optimieren. Ich habe bei einer Untersuchung eine Vorher und Nachher-Befragung durchgeführt und habe die Daten nun nach Teilnehmer-ID gematcht. Man verliert dabei natürlich eine Hand voll Daten, da es Personen gibt, die nur bei der Vorher- bzw. nur bei der Nachher-Befragung teilgenommen haben. Zudem kann man bei einer visuellen Inspektion der Teilnehmer-IDs stark vermuten, dass manche Daten aufgrund von Tippfehlern in der ID nicht gematcht werden konnten. Zum Beispiel gibt es bei der Vorher-Erhebung eine ID mit SAJM27 und bei der Nachher-Befragung eine ID mit SAJN27. Es gibt auch noch andere Varianten. Meine Frage wäre, wie ich R anleiten kann ID's, die sich nur in einem Buchstaben unterscheiden, dennoch zu matchen, wenn zum Beispiel Alter und Geschlecht trotzdem übereinstimmt.
Wie könnte ich zum Beispiel über das Schreiben einer Funktion mir alle Fälle ausgeben lassen, die hinsichtlich ihrer ID ähnlich genug sind und Alter und Geschlecht auch übereinstimmen und anschließend über eine if-Funktion automatisch mergen lassen kann, wenn bestimmte Kriterien erfüllt sind?
Kriterien:
1) Mindestens vier der sechs Buchstaben bzw. Ziffern stimmen überein und stehen an der richtigen Stelle (Reihenfolge) (Bsp.: SAJM27 --> SAIN27) und
2) mindestens einer des/der "falschen" Buchstabens/Ziffer stimmt wenigstens inhaltlich überein (z.B. SAJM27 --> SAJM02)
3) Alter (+- 1) und Geschlecht stimmen überein
Alternativ:
1) Mindestens drei der vier Buchstaben stimmen überein
2) Mindestens eine der zwei Ziffern stimmen überein
3) Alter (+-1) und Geschlecht stimmen überein
Wie kann ich das programmieren? Jeder Hinweiß wäre toll!
Kliene Anmerkung:
Das merging habe ich mit dem Befehl "merge" vorgenommen.
dat_all<- merge(dat1,dat2,by="ID", all=T) #Auflistung aller Daten, auch diejenigen, die sich nicht matchen lassen
dat<- merge(dat1,dat2,by="ID", all=F) #nur vollständige Datensätze (Teilnahme bei Vorher- und Nachher-Befragung; ohne Berücksichtigung von Tippfehlern)
Schonmal vielen Dank!