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
Variable für Gruppenzugehörigkeit erzeugen
Re: Variable für Gruppenzugehörigkeit erzeugen
Hallo Thomas,
willkommen im Forum!or
Anwendung auf Daten:
eventuell auch:
Gruß, Jörg
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="."))
Code: Alles auswählen
X$dreiV <- apply(X, 1, FUN=paste, collapse='.')
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)
Code: Alles auswählen
d$Variante <- match(with(d, paste(Gesch, Bild, Fam, sep=".")), X$dreiV)
Re: Variable für Gruppenzugehörigkeit erzeugen
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
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
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
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Variable für Gruppenzugehörigkeit erzeugen
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:
Gruß, Jörg
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)]
Re: Variable für Gruppenzugehörigkeit erzeugen
Danke Jörg,
Der erste Befehl hat funktioniert. Die Erweiterung versuche ich am Wochenende. Danke
thomas
Der erste Befehl hat funktioniert. Die Erweiterung versuche ich am Wochenende. Danke
thomas