Neue Variable aus alter erstellen mit IF-Bedingung

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Klurkastas
Beiträge: 3
Registriert: Di Mai 08, 2018 9:51 pm

Neue Variable aus alter erstellen mit IF-Bedingung

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Neue Variable aus alter erstellen mit IF-Bedingung

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Klurkastas
Beiträge: 3
Registriert: Di Mai 08, 2018 9:51 pm

Re: Neue Variable aus alter erstellen mit IF-Bedingung

Beitrag von Klurkastas »

Hi Bernhard,

super, das hat geholfen! :)

Vielen Dank!
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Neue Variable aus alter erstellen mit IF-Bedingung

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Neue Variable aus alter erstellen mit IF-Bedingung

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Neue Variable aus alter erstellen mit IF-Bedingung

Beitrag von Athomas »

Den Ehrenpunkt sollst Du gerne haben :) !

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