neue Variable erstellen aus zwei alten wenn Bedingung zutrifft

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
seb
Beiträge: 4
Registriert: So Apr 10, 2022 3:19 pm

neue Variable erstellen aus zwei alten wenn Bedingung zutrifft

Beitrag von seb »

Hallo!

Ich möchte gerne eine neue Variable in meinen Datensatz einfügen. Diese Variable soll keine neuen Werte enthalten, sondern eine Kombination aus zwei alten Variablen, von denen teilweise Werte aus der einen, teilweise Werte aus der anderen übernommen werden sollen. Hintergrund ist folgender: Ich habe ein Experiment mit zwei Bedingungen (HSC und LSC) durchgeführt. Die Bedingungen wurden randomisiert präsentiert. Jetzt würde ich gerne schauen, ob der Zeitpunkt auch eine Rolle gespielt hat und möchte die Werte nicht abhängig von der Experimentalbedingung, sondern von der Reihenfolge analysieren. Dazu habe ich bereits die Faktorvariable "HSC-zuerst" mit den Werten 1 (HSC war als erstes) und 2 (HSC war als zweites) erstellt.

Mein Datenstz heißt "dba2". Die neue Variable soll "skb1_t3" heißen und aus den Werten der Variable skb_1_hs, wenn die Bedingung HSC_zuerst = 1 zutrifft, und den Werten der Variable skb_1_ls, wenn die Bedingung HSC_zuerst=2 zutrifft, bestehen soll.

Ich habe mit folgendem Code versucht, diese Variable zu erstellen:

dba2$skb1_t3 <- dba2$skb_1_hs[dba2$HSC_zuerst==1] & dba2$skb_1_ls[dba2$HSC_zuerst==2]

Dabei kam folgende Fehlermeldung:

"Fehler: Can't recycle `..1` (size 10) to match `..2` (size 4).
Run `rlang::last_error()` to see where the error occurred."


Dazu muss ich vielleicht noch sagen, dass die Gruppe "HSC_zuerst=1" zehn Versuchspersonen und "HSC_zuerst=2" vier Versuchspersonen hat. Hat jemand eine Idee, wo der Fehler liegen könnte?

Viele Grüße
Sebastian
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: neue Variable erstellen aus zwei alten wenn Bedingung zutrifft

Beitrag von bigben »

Hallo Sebastian,

herzlich willkommen im Forum. Eine Reihe von Vorschlägen für solche Umcodierungen verschiedenster Art findest Du hier: viewtopic.php?t=2162

Hier ein Vorschlag für Dein konkretes Problem. Zunächst brauchen wir ein paar Beispieldaten, um das vorzumachen. Die erstellen wir so:

Code: Alles auswählen

bsp <- data.frame(wert1 = 11:30,
                  wert2 = round(rnorm(20),2),
                  erster = sample(c(1, 2), 20, TRUE))
print(bsp)
Eine Möglichkeit, Dein Problem zu lösen, ist die Funktion ifelse:

Code: Alles auswählen

bsp$erste.messung <- ifelse(bsp$erster == 1,
                            yes = bsp$wert1,
                            no = bsp$wert2)
bsp$zweite.messung <- ifelse(bsp$erster == 2,
                            yes = bsp$wert1,
                            no = bsp$wert2)

print(bsp)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
seb
Beiträge: 4
Registriert: So Apr 10, 2022 3:19 pm

Re: neue Variable erstellen aus zwei alten wenn Bedingung zutrifft

Beitrag von seb »

Hi Bernhard,

deine ifelse-Lösung gefällt mir sehr gut. Hat auch direkt in meinem Datensatz funktioniert. Vielen lieben Dank!
Antworten