Seite 1 von 1

Abhängige neue Spalte einfügen

Verfasst: Fr Nov 02, 2018 12:37 pm
von Kramer
Moin,

ich habe ein eigentlich einfaches Problem finde aber keine Lösung:

Ich habe eine Tabelle, die eine Spalte beinhaltet, deren Einträge Ratings sind, z.b. AA oder AA- etc. Ich möchte diese Ratings jetzt mit numerischen Werten haben, d.h. eine neue Spalte hinzufügen, deren Einträge zu dem Rating gehörende Zahlen sind (Für deskriptive Analysen). Z.b. möchte ich, falls die Zeile ein Rating von AA hat, die Zahl 4 in der Spalte haben, bei AA- die Zahl 3 usw.
Kann mir jemand sagen wie ich diese Abhängigkeit der neuen Spalte hinbekomme?

VG

Re: Abhängige neue Spalte einfügen

Verfasst: Fr Nov 02, 2018 12:41 pm
von jogo
Hallo Kramer,

willkommen im Forum!
Schau Dir doch mal die Funktion recode() aus dem Paket car an. MMn müsste sie das von Dir Gewünschte elegant erledigen können.

Gruß, Jörg

Re: Abhängige neue Spalte einfügen

Verfasst: Fr Nov 02, 2018 12:55 pm
von Kramer
Perfekt, hat geklappt, danke :D

Re: Abhängige neue Spalte einfügen

Verfasst: Fr Nov 02, 2018 9:07 pm
von bigben
Man kann sich in R natürlich auch eine einfache Funktion schreiben, die das erledigt.

Code: Alles auswählen

d <- data.frame(rating = c("AA", "A", "AB", "BB", "AA"))

meineFunktion <- Vectorize(function(rating){
  if(rating=="AA") return(4)
  if(rating=="A") return(3)
  if(rating=="AB") return(2)
  if(rating=="BB") return(1)
  return(NA)
})

meineFunktion("AA")

d$neueSpalte <- meineFunktion(d$rating)
print(d)
HTH,
Bernhard

Re: Abhängige neue Spalte einfügen

Verfasst: Fr Nov 02, 2018 9:43 pm
von EDi
Man kann sich in R natürlich auch eine einfache Funktion schreiben, die das erledigt
Oder eine benutzen die schon da ist : switch().

Re: Abhängige neue Spalte einfügen

Verfasst: So Nov 04, 2018 3:01 pm
von bigben
Die kannte ich noch nicht :)

Re: Abhängige neue Spalte einfügen

Verfasst: So Nov 04, 2018 8:51 pm
von EDi
Die kannte ich noch nicht :)
Ist ganz ähnlich zu deiner Lösung. -999 ist der fall-back.

Code: Alles auswählen

d <- data.frame(rating = c("AA", "A", "AB", "BB", "AA", "non"))

foo <- Vectorize(function(rating) {
  switch(as.character(rating),
         AA = 4,
         A = 3,
         AB = 2,
         BB = 1,
         -9999)
})
foo(d$rating)