Seite 1 von 1
Bedingte Funktion
Verfasst: Mi Dez 16, 2020 12:33 pm
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
Re: Bedingte Funktion
Verfasst: Mi Dez 16, 2020 12:46 pm
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
Re: Bedingte Funktion
Verfasst: Mi Dez 16, 2020 12:50 pm
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
Re: Bedingte Funktion
Verfasst: Do Dez 17, 2020 12:27 pm
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
Re: Bedingte Funktion
Verfasst: Do Dez 17, 2020 3:27 pm
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