Seite 1 von 1

Variable für Gruppenzugehörigkeit erzeugen

Verfasst: Do Jan 19, 2017 2:11 pm
von t.k
Hallo,

Ich habe ein Anliegen, dass für R-Fuchse sicherlich eine Kleinigkeit ist, mir aber Schwierigkeiten bereitet.

Also, ich will eine Variable erzeugen, in der alle Gruppenvarianten enthalten sind.

z.B. 3 Variablen: Geschlecht (M, W), Bildung (HS, RS, ABI) und Familienstand (L, V)

Theoretisch sind folgende 12 Varianten denkbar:
1. M ... HS ... L
2. M ... HS ... V
usw.
11. W ... ABI ... L
12. W ... ABI ... V

Im Datensatz wäre das dann so:
Peter ... M ... HS ... Ledig ... Variante = 1
Anna ... W ... ABI ... Ledig ... Variante = 11

Bei 3 Variablen ist die Sache noch übersichtlich. Man könnte mit If-Befehlen arbeiten. Ich würde mich aber über eine andere Lösung freuen, wo quasi ein cod in Abhängigkeit der verwendeten Variablen die Gruppenvarianten erzeugt und diese in eine Variable schreibt.

Danke
thomas

Re: Variable für Gruppenzugehörigkeit erzeugen

Verfasst: Do Jan 19, 2017 2:45 pm
von jogo
Hallo Thomas,

willkommen im Forum!

Code: Alles auswählen

Geschlecht <- c("M", "W"); Bildung <- c("HS", "RS", "ABI"); Familienstand <- c("L", "V")
X <- expand.grid(Geschlecht, Bildung, Familienstand)
X$dreiV <- with(X, paste(Var1, Var2, Var3, sep="."))
or

Code: Alles auswählen

X$dreiV <- apply(X, 1, FUN=paste, collapse='.')
Anwendung auf Daten:

Code: Alles auswählen

d <- read.table(header=TRUE, text=
"Name Gesch Bild Fam
Peter M  HS  L
Anna  W  ABI V")
match(with(d, paste(Gesch, Bild, Fam, sep=".")), X$dreiV)
eventuell auch:

Code: Alles auswählen

d$Variante <- match(with(d, paste(Gesch, Bild, Fam, sep=".")), X$dreiV)
Gruß, Jörg

Re: Variable für Gruppenzugehörigkeit erzeugen

Verfasst: Do Jan 19, 2017 3:04 pm
von t.k
Hallo Jörg,

Das ist fast genau das was ich brauche. Nur eine Sache müsste man noch ändern: Momentan steht im Output in der Variable "dreiV" M.HS.L usw. Wenn ich statt Buchstaben Zahlen eingebe, dann bekomme ich quasi 1.1.1 usw. Wie bekommt man es hin, dass das Ganze durchnummeriert wird? Also M.HS.L = 1, M.HS.V = 2 usw.???

Danke,
thomas

Re: Variable für Gruppenzugehörigkeit erzeugen

Verfasst: Do Jan 19, 2017 3:09 pm
von EDi
Das geht mit interaction():

Code: Alles auswählen

df <- expand.grid(Geschlecht = c('M', 'W'),
                  Bildung = c('HS', 'RS', 'ABI'),
                  Familienstand = c('L', 'V'))

df

interaction(df)
with(df, interaction(Geschlecht, Bildung, Familienstand))

Re: Variable für Gruppenzugehörigkeit erzeugen

Verfasst: Do Jan 19, 2017 3:13 pm
von jogo
Hallo Thomas,

es ist schon durchnummeriert durch die Nummer des Datensatzes im Dataframe X. Ich habe meine Antwort um eine kleine Anwendung erweitert.
Hast Du eine bestimmte vordefinierte Nummerierung? Wenn ja, welche?
Wenn Du so eine gewünschte Nummerierung vorgegeben hast, kannst Du sie als weitere Spalte im Dataframe X eintragen (z.B als Spalte VariNummer).
Der Zugriff kann dann wie folgt geschehen:

Code: Alles auswählen

X$VariNummer[match(with(d, paste(Gesch, Bild, Fam, sep=".")), X$dreiV)]
Gruß, Jörg

Re: Variable für Gruppenzugehörigkeit erzeugen

Verfasst: Do Jan 19, 2017 6:35 pm
von t.k
Danke Jörg,

Der erste Befehl hat funktioniert. Die Erweiterung versuche ich am Wochenende. Danke :)

thomas