Seite 1 von 1

Anzahl der Ausprägungen einer Variablen, gruppiert nach einer weiteren Variablen

Verfasst: Mi Nov 09, 2016 3:14 pm
von Jörg
Hallo,

ich habe einen Datensatz, der u.a. zwei Variablen enthält, im Beispiel v1 und v2.

Code: Alles auswählen

v1<-c("a","a","a","b","b","b","c","c","c","c")
v2<-c("a1","a1","a2","b2","b3","b1","c2","c2","c1","C5")
df<-cbind(v1,v2)
df<-as.data.frame(df)
Nun möchte ich, gruppiert nach v1, die Anzahl der einzigartigen Werte von v2 haben. Also letzlich sowas wie length(unique(v2)), aber gruppiert nach v1.

Im Beispiel lautet das Ergebnis
a: 2 (zwei einzigartige Werte von v2 innerhalb des Subsets V1=a
b: 3
c: 3

Im nächsten Schritt möchte ich den jeweiligen Wert in der Ursprungstabelle einfügen.

Das Ergebnis sähe im Falle des Beispiels so aus:

Code: Alles auswählen

V2<-c(2,2,2,3,3,3,3,3,3,3)
df_neu<-cbind(v1,v2,v3)
In meinem konkrten Beispiel haben beide Variablen tausende verschiedene Ausprägungen.

Hat jemand eine Idee?

Herzlichen Dabnk und Grüße

Jörg

Re: Anzahl der Ausprägungen einer Variablen, gruppiert nach einer weiteren Variablen

Verfasst: Mi Nov 09, 2016 3:55 pm
von bigben
So etwa?

Code: Alles auswählen

v1<-c("a","a","a","b","b","b","c","c","c","c")
v2<-c("a1","a1","a2","b2","b3","b1","c2","c2","c1","C5")
df<-cbind(v1,v2)
df<-as.data.frame(df)

df$uni.len <- ave(v2, v1, FUN = function(x) length(unique(x)))

print(df)
LG,
Bernhard

Re: Anzahl der Ausprägungen einer Variablen, gruppiert nach einer weiteren Variablen

Verfasst: Mi Nov 09, 2016 4:49 pm
von Jörg
Das sieht prima aus, vielen Dank!! Habe es bei einem Testdatensatz probiert und hatte initial das Problem, dass beide Variablen als factor eingelesen wurden und nicht als character. Das gab dann Fehlermeldungen. Nach der entpsrechenden Korrektur hat es aber geklappt.

Re: Anzahl der Ausprägungen einer Variablen, gruppiert nach einer weiteren Variablen

Verfasst: Mi Nov 09, 2016 8:40 pm
von bigben
Schön. Das ist eine sehr nützliche Funktion, die ich erst hier im Forum kennengelernt habe.