Seite 1 von 1

Neue Variable aus alter erstellen mit IF-Bedingung

Verfasst: Di Mai 08, 2018 9:58 pm
von Klurkastas
Hallo zusammen :)

Ich bin neu hier und habe folgendes Problem:

Ich habe in meinem Datensatz eine String-Variable, die verschiedene Informationen enthält:

Aktivitäten
"Laufen, Rennen, Essen"
"Laufen, Essen"
"Rennen, Essen, Entspannen"
usw...

Ich würde nun gerne aus dieser Variable mehrere neue Dummy-Variablen erstellen, damit es so aussieht:

Laufen | Rennen | Essen | Entspannen
1 1 1 0
1 0 1 0
0 1 1 1

Kann ich irgendwie dem Programm sagen, dass ich möchte, dass wenn die Variable "Aktivitäten" z.B. Laufen enthält, in der Variable "Laufen" eine 1 gesetzt wird und ansonsten eine 0?

Habe im Internet leider bisher nichts gefunden.

Vielen Dank im Voraus!

Liebe Grüße
Klurk

Re: Neue Variable aus alter erstellen mit IF-Bedingung

Verfasst: Di Mai 08, 2018 10:26 pm
von bigben
Hallo Klurk,

hilft das hier beim Selbermachen?

Code: Alles auswählen

d <- c("Laufen, Rennen, Essen", "Laufen, Essen", "Rennen, Essen, Entspannen")
grep("Laufen", d)
grep("Rennen", d)
grep("Entspannen", d)
Vielleicht irgendwie so?

Code: Alles auswählen

m <- matrix(0, nrow=3, ncol=5)

m[grep("Laufen", d), 1] <- 1
m[grep("Rennen", d), 2] <- 1
m[grep("Essen", d),  3] <- 1
m[grep("Entspannen", d), 4] <- 1
m[grep("Radfahren", d),  5] <- 1
LG,
Bernhard

Re: Neue Variable aus alter erstellen mit IF-Bedingung

Verfasst: Mi Mai 09, 2018 5:14 pm
von Klurkastas
Hi Bernhard,

super, das hat geholfen! :)

Vielen Dank!

Re: Neue Variable aus alter erstellen mit IF-Bedingung

Verfasst: Mi Mai 09, 2018 7:43 pm
von Athomas
Gestern war ich spontan der Meinung, es müsste schön mit "outer" gehen!
Ich hab's allerdings nicht hinbekommen :( !

Deshalb hier eine alternative Lösung, deren Vorteil man vielleicht erst bei (ein wenig) größeren Datenmengen sieht:

Code: Alles auswählen

a <- c("Laufen, Rennen, Essen", "Laufen, Essen", "Rennen, Essen, Entspannen")
b <- unique(trimws(unlist(strsplit(a, split=","))))         # zieht die vorkommenden Wörter aus den Phrasenblöcken

Ergebnis <- apply(matrix(b), 1, function(x) grepl(x,a))
dimnames(Ergebnis) <- list(paste("Block", 1:length(a)), b)
Ergebnis

Re: Neue Variable aus alter erstellen mit IF-Bedingung

Verfasst: Do Mai 10, 2018 3:03 pm
von bigben
Das automatische Erfassen der vorkommenden Wörter merkt man bestimmt schon bei kleinen Datenmengen und es verringert die Gefahr von kleinen Flüchtigkeitsfehlern im Code enorm - nur in der Kategorie "Anfängerfreundlichkeit" darf ich mir dann vielleicht doch noch ein kleines Pünktchen gutschreiben ?

LG
Bernhard

Re: Neue Variable aus alter erstellen mit IF-Bedingung

Verfasst: Do Mai 10, 2018 8:17 pm
von Athomas
Den Ehrenpunkt sollst Du gerne haben :) !

Aber die "Hauptsache es läuft"-Anfänger hatte ich gar nicht im Visier...