Seite 1 von 1

Neue Variable erstellen mit "wenn, dann" Funktion

Verfasst: Di Mär 13, 2018 4:36 pm
von juppi
Hallo zusammen :) ,

ich habe folgenden Datensatz:

Code: Alles auswählen

dput(head(dat.ges,15))
structure(list(VP = c(11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 
12, 12, 12, 12, 13), Emotion = structure(c(4L, 6L, 7L, 3L, 2L, 
1L, 5L, 4L, 6L, 7L, 3L, 2L, 1L, 5L, 4L), .Label = c("Anger", 
"Disgust", "Fear", "Happy", "Neutral", "Sad", "Suprise"), class = "factor"), 
    EmotionScore = c(0.97, 0, 0, 0, 0, 0, 0, 0.97, 0, 0, 0, 0, 
    0.9, 0, 0), EmotionReal = c("Fear", "Fear", "Fear", "Fear", 
    "Fear", "Fear", "Fear", "Anger", "Anger", "Anger", "Anger", 
    "Anger", "Anger", "Anger", "Disgust")), .Names = c("VP", 
"Emotion", "EmotionScore", "EmotionReal"), row.names = c(NA, 
15L), class = "data.frame")

Code: Alles auswählen

> head(dat.ges,15)
   VP Emotion EmotionScore EmotionReal
1  11   Happy         0.97        Fear
2  11     Sad         0.00        Fear
3  11 Suprise         0.00        Fear
4  11    Fear         0.00        Fear
5  11 Disgust         0.00        Fear
6  11   Anger         0.00        Fear
7  11 Neutral         0.00        Fear
8  12   Happy         0.97       Anger
9  12     Sad         0.00       Anger
10 12 Suprise         0.00       Anger
11 12    Fear         0.00       Anger
12 12 Disgust         0.00       Anger
13 12   Anger         0.90       Anger
14 12 Neutral         0.00       Anger
15 13   Happy         0.00     Disgust
Daraus möchte ich gerne eine neue Variable in Form einer Dummy-Kodierung (1=True, 0=False) erstellen. Jedes mal wenn in der Variable EmotionScore eine Zahl >0 steht, soll abgeglichen werden, ob in dieser Zeile die Emotionen (Happy, Sad, Suprise, Fear, Disgust, Anger, Neutral) in den Variablen Emotion und EmotionReal übereinstimmen. Wenn dieser Fall nicht eintritt (Bsp. Happy - 0.97 - Fear) soll 0 kodiert werden, wenn der Fall eintritt (Bsp. Anger - 0.90 - Anger), soll 1 kodiert werden.

Wäre super, wenn mir jemand weiterhelfen könnte! :roll: :)

Re: Neue Variable erstellen mit "wenn, dann" Funktion

Verfasst: Di Mär 13, 2018 5:28 pm
von juppi
Damit habe ich es versucht:

Code: Alles auswählen

dat.ges$EmotionRight <- EmotionRigthEmotion==EmotionReal [EmotionScore>0]
Es werden aber leider die falschen Fälle ausgewählt :(

Re: Neue Variable erstellen mit "wenn, dann" Funktion

Verfasst: Di Mär 13, 2018 8:37 pm
von jogo
Hallo juppi,

willkommen im Forum!
Richtig ist:

Code: Alles auswählen

dat.ges$EmotionRight <- with(dat.ges, ifelse((EmotionScore>0) & (Emotion==EmotionReal), 1, 0))
Wenn eine Kodierung als logical ausreichend ist, geht es kürzer:

Code: Alles auswählen

dat.ges$EmotionRight <- with(dat.ges, (EmotionScore>0) & (Emotion==EmotionReal) )
Gruß, Jörg

Re: Neue Variable erstellen mit "wenn, dann" Funktion

Verfasst: Mi Mär 14, 2018 11:36 am
von juppi
Super Danke :) :)