Variablen zusammenführen
Variablen zusammenführen
Hallo ihr Lieben,
ich habe im Moment mit der Aufbereitung meiner Daten zwei Probleme. Ich habe von Patienten Vollblutproben abgenommen und dieses nun analysiert. Bei manchen Patienten hat das Serum aus der ersten Probe nicht ausgereicht, sodass ich die zweite Probe verwenden musste. Das Programm das ich verwendet habe spuckt mir dann 2 Variablen zur gleichen Versuchsperson innerhalb eines Datensatzes aus, ungefähr so: VPN0001 und VPN0002second_run. Ich würde gerne, dass alle Daten innerhalb von VPN0001 auftauchen. Das matchen gestaltet sich aber schwer, da die Variablen unterschiedlich heißen und nicht in zwei Datensätzen sind und gleich sind. Würde es eventuell Sinn machen, den Mittelwert beider Variablen zu berechnen, da ich jeweils auf der anderen Variable sowieso Missings habe?
Das zweite Problem ist, dass ich psychologische Daten der Versuchspersonen habe, in denen der Versuchscode (leider) anders benannt wurde, da ich die nicht selbst erhoben habe. Das heißt ich habe einen Datensatz mit Serumwerten, wo die Versuchspersonen z.B. als Code XY0001 haben und einen Datensatz in dem die Versuchpersonen YZ0001 heißen, wobei die Nummerendungen sich jeweils entsprechen. Jetzt bin ich auf der Suche nach einer intelligenten Lösung die Datensätze anhand der Variable "Code" zusammenzufassen, ohne, dass ich jeden Fall händisch umbenennen muss. Gibts da von euch Vorschläge?
Liebe Grüße aus der Datenaufbereitungs-Hölle
Max
ich habe im Moment mit der Aufbereitung meiner Daten zwei Probleme. Ich habe von Patienten Vollblutproben abgenommen und dieses nun analysiert. Bei manchen Patienten hat das Serum aus der ersten Probe nicht ausgereicht, sodass ich die zweite Probe verwenden musste. Das Programm das ich verwendet habe spuckt mir dann 2 Variablen zur gleichen Versuchsperson innerhalb eines Datensatzes aus, ungefähr so: VPN0001 und VPN0002second_run. Ich würde gerne, dass alle Daten innerhalb von VPN0001 auftauchen. Das matchen gestaltet sich aber schwer, da die Variablen unterschiedlich heißen und nicht in zwei Datensätzen sind und gleich sind. Würde es eventuell Sinn machen, den Mittelwert beider Variablen zu berechnen, da ich jeweils auf der anderen Variable sowieso Missings habe?
Das zweite Problem ist, dass ich psychologische Daten der Versuchspersonen habe, in denen der Versuchscode (leider) anders benannt wurde, da ich die nicht selbst erhoben habe. Das heißt ich habe einen Datensatz mit Serumwerten, wo die Versuchspersonen z.B. als Code XY0001 haben und einen Datensatz in dem die Versuchpersonen YZ0001 heißen, wobei die Nummerendungen sich jeweils entsprechen. Jetzt bin ich auf der Suche nach einer intelligenten Lösung die Datensätze anhand der Variable "Code" zusammenzufassen, ohne, dass ich jeden Fall händisch umbenennen muss. Gibts da von euch Vorschläge?
Liebe Grüße aus der Datenaufbereitungs-Hölle
Max
Re: Variablen zusammenführen
Hallo Max,
willkommen im Forum!
Kannst Du uns bitte zeigen mit welchen Code Du die Daten eingelesen hast?
Auch die Outputs vonfür die beteiligten Dataframes ist eine wertvolle Information für uns, um Dir helfen zu können.
Ich vermute, es wird vielleicht etwas wie merge() werden.
Gruß, Jörg
willkommen im Forum!
Kannst Du uns bitte zeigen mit welchen Code Du die Daten eingelesen hast?
Auch die Outputs von
Code: Alles auswählen
str(Dataframe)
Ich vermute, es wird vielleicht etwas wie merge() werden.
Gruß, Jörg
Re: Variablen zusammenführen
Hallo Jogo,
Die Serums-Daten habe ich mittels read.delim und die psychdaten mittels read.csv eingelesen.
Ich hab dir mal für das zweite Problem nur die "code" Variablen angegeben, weil die Datensätze riesig sind.
Kannst du damit was anfangen?
Die Serums-Daten habe ich mittels read.delim und die psychdaten mittels read.csv eingelesen.
Ich hab dir mal für das zweite Problem nur die "code" Variablen angegeben, weil die Datensätze riesig sind.
Code: Alles auswählen
str(dataframe1$code)
Factor w/ 112 levels "TG0001S..Log2.normalized.",..:
Code: Alles auswählen
str(dataframe2$code)
Factor w/ 555 levels "B0001","B0002",..:
Re: Variablen zusammenführen
Hallo Max,
also in Deinem Fall:
Besonders für den zweiten Dataframe sind auch andere Varianten möglich, z.B.
(Von der Datenaufbereitungs-Hölle ins regex-Paradies)
Nachtrag: gelegentlich sind die regex eine Hölle für sich.
Es geht auch ohne regex, z.B. mit der Funktion substr(), z.B.Wenn man dann den Zifferncode in beiden Dataframes rausgelöst hat, dann man mit diese Variable bei merge() verwenden.
Gruß, Jörg
Du kannst die vier Ziffern mit Hilfe eines regulären Ausdrucks identifizieren, z.B.:max-r hat geschrieben: ↑Mo Sep 10, 2018 12:36 pm Die Serums-Daten habe ich mittels read.delim und die psychdaten mittels read.csv eingelesen.
Ich hab dir mal für das zweite Problem nur die "code" Variablen angegeben, weil die Datensätze riesig sind.
Code: Alles auswählen
str(dataframe1$code) Factor w/ 112 levels "TG0001S..Log2.normalized.",..:
Kannst du damit was anfangen?Code: Alles auswählen
str(dataframe2$code) Factor w/ 555 levels "B0001","B0002",..:
Code: Alles auswählen
x <- "TG0001S..Log2.normalized."
gsub(".*(\\d\\d\\d\\d).*", "\\1", x)
Code: Alles auswählen
gsub(".*(\\d\\d\\d\\d).*", "\\1", dataframe1$code)
gsub(".*(\\d\\d\\d\\d).*", "\\1", dataframe2$code)
Code: Alles auswählen
gsub("^.", "", ...)
Nachtrag: gelegentlich sind die regex eine Hölle für sich.
Es geht auch ohne regex, z.B. mit der Funktion substr(), z.B.
Code: Alles auswählen
x <- "TG0001S..Log2.normalized."
substr(x, 3, 6)
Code: Alles auswählen
dataframe1$VPerson <- gsub(".*(\\d\\d\\d\\d).*", "\\1", dataframe1$code)
dataframe2$VPerson <- gsub(".*(\\d\\d\\d\\d).*", "\\1", dataframe2$code)
merge(dataframe1, dataframe2, by="VPerson")
Re: Variablen zusammenführen
Danke - es hat übrigens bestens funktioniert. Hab ich gar nicht mehr geschrieben!
Jetzt habe ich noch ein kleines Problem, dann könnte die Datenanalyse eigentlich beginnen:
Bei der Serumanalyse haben unsere Maschinen nicht immer optimal gearbeitet, weswegen wir einen zweiten oder dritten run machen mussten. Dabei passiert folgendes. Bis zum ersten Abbruch habe ich Daten für die Versuchsperson TG332S..Log2.normalized., für alles danach habe ich Daten für eine Versuchsperson namens TG332S_2nd.run..Log2.normalized. Es gibt jeweils Missings dort wo im anderen run nichts identifiziert wurde. Das heißt es gibt keine Datenüberschneidungen, sondern Missings dort wo im anderen run nichts identifziert wurde. Die Frage ist jetzt wie ich diese beiden Versuchspersonen zu einer zusammen legen kann. Es gibt zwei Möglichkeiten. Entweder ich mache es noch während die Versuchspersonen als Spalten, also Variablen da stehen, oder danach, wenn ich die Spalten und Zeilen vertauscht habe und eine neue Variable namens "code" habe. Irgendwelche sinnvollen Vorschläge?
Lieben Gruß Max
Jetzt habe ich noch ein kleines Problem, dann könnte die Datenanalyse eigentlich beginnen:
Bei der Serumanalyse haben unsere Maschinen nicht immer optimal gearbeitet, weswegen wir einen zweiten oder dritten run machen mussten. Dabei passiert folgendes. Bis zum ersten Abbruch habe ich Daten für die Versuchsperson TG332S..Log2.normalized., für alles danach habe ich Daten für eine Versuchsperson namens TG332S_2nd.run..Log2.normalized. Es gibt jeweils Missings dort wo im anderen run nichts identifiziert wurde. Das heißt es gibt keine Datenüberschneidungen, sondern Missings dort wo im anderen run nichts identifziert wurde. Die Frage ist jetzt wie ich diese beiden Versuchspersonen zu einer zusammen legen kann. Es gibt zwei Möglichkeiten. Entweder ich mache es noch während die Versuchspersonen als Spalten, also Variablen da stehen, oder danach, wenn ich die Spalten und Zeilen vertauscht habe und eine neue Variable namens "code" habe. Irgendwelche sinnvollen Vorschläge?
Lieben Gruß Max
Re: Variablen zusammenführen
Nochmal zur Klarstellung: entweder sind in der Variablen "...log2normalized" oder in der Variablen "...2nd.run..log2normalized" Daten?
Spricht dann was dagegen, die N/As durch 0 zu ersetzen und dann beide runs zu addieren?
Grüße
Ruedi
Spricht dann was dagegen, die N/As durch 0 zu ersetzen und dann beide runs zu addieren?
Grüße
Ruedi
fortune(111)
Re: Variablen zusammenführen
Stimmt - eigentlich liegen die einfachen Lösungen sehr Nahe .. Theoretisch könnte ich aber auch einfach den Mittelwert aus beiden Variablen bilden, bevor ich den N/As durch 0 ersetze. Bei N/As dürfte ja einfach nur der eine Wert gezählt werden, oder?
Re: Variablen zusammenführen
Code: Alles auswählen
mean(c(1, NA, 3), na.rm=TRUE) ### bringt Klarheit