Variablen aus unterschiedlichen Bedingungen in einem Datensatz zusammenfügen
-
- Beiträge: 7
- Registriert: Mi Jun 02, 2021 4:25 pm
Variablen aus unterschiedlichen Bedingungen in einem Datensatz zusammenfügen
Hallo zusammen,
leider kenne ich mich nicht allzu gut mit R aus, komme meistens aber irgendwie ans Ziel.
Jetzt ist leider mein Skript so unübersichtlich, dass ich eine möglichst effiziente Lösung für folgendes Problem suche:
Ich habe einen Datensatz, in dem bei jeder VP eine Variable in 4 Bedingungen erhoben wurden. Durch ein within-design liegen die Daten in 4 verschiedenen Spalten vor (und ich habe somit keine Spalte, die die Bedingung von 1-4 kopiert). Um jetzt mittels einer ANOVA zu untersuchen, ob sich die Werte der Variablen in den 4 Bedingungen unterscheiden, hätte ich gerne einen Datensatz, in dem im Prinzip die 4 Variablen "untereinandergehängt" werden und je eine weitere Spalte die Bedingung und die VPNummer kodiert (die sich dann entsprechend jeweils 4 Mal wiederholt).
Bisher habe ich jeweils pro Bedingung einen einzelnen Datensatz erstellt und hier die Bedingung "händisch" als 1, 2,3 oder 4 kodiert und diese mit rbind aneinandergefügt (da mehrere Variablen erhoben wurden, ist das Skript am Ende sehr lang). Gibt es hier eine effizientere Möglichkeit?
Ich hoffe, mein Problem ist deutlich geworden und ich habe alle wichtigen Infos aufgeschrieben.
Vielen Dank im Voraus!
leider kenne ich mich nicht allzu gut mit R aus, komme meistens aber irgendwie ans Ziel.
Jetzt ist leider mein Skript so unübersichtlich, dass ich eine möglichst effiziente Lösung für folgendes Problem suche:
Ich habe einen Datensatz, in dem bei jeder VP eine Variable in 4 Bedingungen erhoben wurden. Durch ein within-design liegen die Daten in 4 verschiedenen Spalten vor (und ich habe somit keine Spalte, die die Bedingung von 1-4 kopiert). Um jetzt mittels einer ANOVA zu untersuchen, ob sich die Werte der Variablen in den 4 Bedingungen unterscheiden, hätte ich gerne einen Datensatz, in dem im Prinzip die 4 Variablen "untereinandergehängt" werden und je eine weitere Spalte die Bedingung und die VPNummer kodiert (die sich dann entsprechend jeweils 4 Mal wiederholt).
Bisher habe ich jeweils pro Bedingung einen einzelnen Datensatz erstellt und hier die Bedingung "händisch" als 1, 2,3 oder 4 kodiert und diese mit rbind aneinandergefügt (da mehrere Variablen erhoben wurden, ist das Skript am Ende sehr lang). Gibt es hier eine effizientere Möglichkeit?
Ich hoffe, mein Problem ist deutlich geworden und ich habe alle wichtigen Infos aufgeschrieben.
Vielen Dank im Voraus!
Re: Variablen aus unterschiedlichen Bedingungen in einem Datensatz zusammenfügen
Hallo Sophia,
da gibt es viele richtige Antworten. Eine gute ist die Funktino pivot_longer aus dem Package tidyr. Schau mal, ob Dir das hier hilft:
LG,
Bernhard
da gibt es viele richtige Antworten. Eine gute ist die Funktino pivot_longer aus dem Package tidyr. Schau mal, ob Dir das hier hilft:
Code: Alles auswählen
bsp <- data.frame(id = 1:10,
messung1 = 1:10,
messung2 = 11:20,
messung3 = 21:30)
library(tidyr)
pivot_longer(bsp, messung1:messung3) %>% as.data.frame()
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Variablen aus unterschiedlichen Bedingungen in einem Datensatz zusammenfügen
Schau dir mal die Funktion tidyr::pivot_longer an.
Oder ?reshape (das empfinde ich aber schwerer zu verstehen).
Oder ?reshape (das empfinde ich aber schwerer zu verstehen).
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
-
- Beiträge: 7
- Registriert: Mi Jun 02, 2021 4:25 pm
Re: Variablen aus unterschiedlichen Bedingungen in einem Datensatz zusammenfügen
Vielen Dank für die schnellen Antworten!
Ich hatte auch schon an pivot_longer gedacht, habe dann ja aber immer noch das Problem, dass ich keine Variable (dann als Spalte) habe, die meine 4 Bedingungen kodiert und "auseinanderhält", oder?
Ich hatte auch schon an pivot_longer gedacht, habe dann ja aber immer noch das Problem, dass ich keine Variable (dann als Spalte) habe, die meine 4 Bedingungen kodiert und "auseinanderhält", oder?
Re: Variablen aus unterschiedlichen Bedingungen in einem Datensatz zusammenfügen
Hallo Sophia,
Ich verstehe das Problem gerade nicht. Kannst Du konkret am Output meines Codebeispiels oben erklären, was Dir da fehlt?
LG, Bernhard
Ich verstehe das Problem gerade nicht. Kannst Du konkret am Output meines Codebeispiels oben erklären, was Dir da fehlt?
LG, Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
-
- Beiträge: 7
- Registriert: Mi Jun 02, 2021 4:25 pm
Re: Variablen aus unterschiedlichen Bedingungen in einem Datensatz zusammenfügen
Oh stimmt, es gibt auch gar kein Problem! Ich glaube, ich stand nur auf dem Schlauch und habe es jetzt richtig eingegeben und es klappt!
Vielen, vielen Dank!
Jetzt, wo das ja doch schon so einfach war, habe ich dann noch die Frage, ob man das auch gleichzeitig mit mehreren Variablen nach dem Prinzip machen kann. Also angenommen, ich habe drei Variablen a, b, c, die in jeweils 4 Bedingungen erhoben wurden (also habe ich die Spalten a1, a2, a3, a4, b1, b2, ...). Kann ich dann so einen Datensatz genau so wie in deinem Beispiel im Long-Format haben, nur dass ich eben die drei Spalten a, b und c habe? Oder sollte ich vorher mit jeder Variablen wie in deinem Beispiel vorgehen und diese mit cbind() (?) verbinden?
Vielen, vielen Dank!
Jetzt, wo das ja doch schon so einfach war, habe ich dann noch die Frage, ob man das auch gleichzeitig mit mehreren Variablen nach dem Prinzip machen kann. Also angenommen, ich habe drei Variablen a, b, c, die in jeweils 4 Bedingungen erhoben wurden (also habe ich die Spalten a1, a2, a3, a4, b1, b2, ...). Kann ich dann so einen Datensatz genau so wie in deinem Beispiel im Long-Format haben, nur dass ich eben die drei Spalten a, b und c habe? Oder sollte ich vorher mit jeder Variablen wie in deinem Beispiel vorgehen und diese mit cbind() (?) verbinden?
Re: Variablen aus unterschiedlichen Bedingungen in einem Datensatz zusammenfügen
Hallo Sophia,
versuch mal
Dann zeigt R Dir einen ausführlichen Erklärungstext zu pivot_longer und pivot_wider an. Unter der Überschrift "Multiple observations per row" solltest Du Dir die vielfältigen Möglichkeiten dieser Funktion in Ruhe und vor allem in Kenntnis Deines konkreten Datenvorhabens durchlesen.
LG,
Bernhard
versuch mal
Code: Alles auswählen
library(tidyr)
vignette(pivot)
Sonst nochmal konkret nachfragen, dann aber mit reproduzierbarem Minimalbeispiel.So far, we have been working with data frames that have one observation per row, but many important pivotting problems involve multiple observations per row. You can usually recognise this case because name of the column that you want to appear in the output is part of the column name in the input. In this section, you’ll learn how to pivot this sort of data. ...
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
-
- Beiträge: 7
- Registriert: Mi Jun 02, 2021 4:25 pm
Re: Variablen aus unterschiedlichen Bedingungen in einem Datensatz zusammenfügen
Hallo Bernhard,
das Beispiel sieht an sich schon ganz gut aus und das ist auch das, was ich suche. Ich bekomme es aber leider aufgrund meiner (wahrscheinlich recht ungünstigen) Variablennamen nicht richtig hin. Der Aufbau meines Datensatzes und der Variablennamen sieht folgendermaßen aus:
Liebe Grüße Sophia
das Beispiel sieht an sich schon ganz gut aus und das ist auch das, was ich suche. Ich bekomme es aber leider aufgrund meiner (wahrscheinlich recht ungünstigen) Variablennamen nicht richtig hin. Der Aufbau meines Datensatzes und der Variablennamen sieht folgendermaßen aus:
- id
S1.X
S2.X
S3.X
S4.X
S1.Y.
S2.Y.
S3.Y.
S4.Y.
S1.Z.
S2.Z.
S3.Z.
S4.Z.
Liebe Grüße Sophia