Variable für Gruppenzugehörigkeit erzeugen

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

Moderatoren: EDi, jogo

Antworten
t.k

Variable für Gruppenzugehörigkeit erzeugen

Beitrag 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
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Variable für Gruppenzugehörigkeit erzeugen

Beitrag 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
t.k

Re: Variable für Gruppenzugehörigkeit erzeugen

Beitrag 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
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Variable für Gruppenzugehörigkeit erzeugen

Beitrag 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))
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Variable für Gruppenzugehörigkeit erzeugen

Beitrag 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
t.k

Re: Variable für Gruppenzugehörigkeit erzeugen

Beitrag von t.k »

Danke Jörg,

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

thomas
Antworten