Bedingte Funktion

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
Jonas_Bre
Beiträge: 4
Registriert: Mo Dez 14, 2020 10:55 am

Bedingte Funktion

Beitrag von Jonas_Bre »

Hallo allesamt,

ich habe ein kleines Problem und hoffe, dass Ihr dabei helfen könnt.

Es geht um zwei Variablen, einmal das Studienfach (1=Deutsch, 2 = MINT, 3 = gessellschaftlich 4 = musisch 5 = Sport) und das Wohlbefinden der Person (1 niedrig bis 5 hoch).

Ich möchte nun eine Funktion erstellen, in der für alle Personen mit Studienfach 1 (Deutsch) vom jeweiligen Wohlbefinden der Person der Wert 2 abgezogen wird, während von Personen mit Studienfach 2 und 3 vom Wohlbefinden 3 abgezogen wird.

Ich hoffe die Frage ist verständlich, meldet euch sonst gerne nochmal mit nachfrage.

Vielen Dank und schöne Feiertage
Jonas
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Bedingte Funktion

Beitrag von jogo »

Hallo Jonas,

zeigst Du jetzt bitte trotzdem erstmal die Struktur Deiner Daten?
siehe viewtopic.php?p=13793#p13793

Deine Aufgabe müsste mit ifelse() zu lösen sein.

Gruß, Jörg
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Bedingte Funktion

Beitrag von bigben »

Hallo jonas,

Du erhöhst Deine Chancen auf gute und schnelle Antworten, wenn Du zu sowas R-Code mit Beispieldaten postest.

Was hälst Du davon?

Code: Alles auswählen

bsp <- data.frame(fach = gl(5,3,labels = c("Deutsch", "MINT", "gesellschaftlich", "musisch", "Sport")),
                  wohl = sample(1:5, 15, TRUE))

print(bsp)

bsp$differenz <- ifelse(bsp$fach == "Deutsch", yes = -2, no = -3)

print(bsp)

bsp$wohl <- bsp$wohl + bsp$differenz
bsp$differenz <- NULL

print(bsp)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Jonas_Bre
Beiträge: 4
Registriert: Mo Dez 14, 2020 10:55 am

Re: Bedingte Funktion

Beitrag von Jonas_Bre »

Hallo Bernhard, Hallo Jörg,

danke für eure Anregungen. Hier erstmal die (gekürzte) Datenstruktur, ich hoffe das entspricht dem was du suchst. Ich habe die Anzahl der Fächer etwas gekürzt um im Beispiel Übersichtlichkeit zu bekommen.

Code: Alles auswählen

> str(daten)
'data.frame':	719 obs. of  647 variables:

$ fach_01               : num  2 2 2 2 20 4 16 4 4 4 ...
  ..- attr(*, "label")= chr "1. Fach(richtung) /Lernbereich"
  ..- attr(*, "format.spss")= chr "F8.2"
  ..- attr(*, "display_width")= int 0
  ..- attr(*, "labels")= Named num  1 2 3 4 5 6 7 8 9 10 ...
  .. ..- attr(*, "names")= chr  "Chemie" "Deutsch" "Elektrotechnik" "Englisch" ...
Die Ifelse Funktion sieht super aus, es bleibt nur noch ein kleines Problem: Damit wird -3 von allen abgezogen die nicht Deutsch sind, somit auch von sport obwohl davon kein Wert abgezogenw erden soll. Kann ich noch irgendwie eine Zweite if schleife einfügen?

Viele Grüße
Jonas
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Bedingte Funktion

Beitrag von jogo »

Hallo Jonas,

bei mir sieht es so aus:

Code: Alles auswählen

bsp <- data.frame(fach = gl(5,3,labels = c("Deutsch", "MINT", "gesellschaftlich", "musisch", "Sport")),
                  wohl = sample(1:5, 15, TRUE))

bsp$wohl[bsp$fach=="Deutsch"] <- bsp$wohl[bsp$fach=="Deutsch"] - 2
bsp$wohl[bsp$fach %in% c("MINT", "gesellschaftlich")] <- 
  bsp$wohl[bsp$fach %in% c("MINT", "gesellschaftlich")] - 3
oder so:

Code: Alles auswählen

bsp$wohl[bsp$fach=="Deutsch"] <- bsp$wohl[bsp$fach=="Deutsch"] - 2
i <- bsp$fach %in% c("MINT", "gesellschaftlich")
bsp$wohl[i] <- bsp$wohl[i] - 3
Gruß, Jörg
Antworten