Nehmen wir an, ich habe:
v = rep(c(1,2, 2, 2), 25)
Jetzt möchte ich zählen, wie oft jeder eindeutige Wert angezeigt wird. unique(v)
Gibt die eindeutigen Werte zurück, jedoch nicht die Anzahl.
> unique(v)
[1] 1 2
Ich möchte etwas, das mir gibt
length(v[v==1])
[1] 25
length(v[v==2])
[1] 75
aber als allgemeinerer Einzeiler :) Etwas Nahes (aber nicht ganz) wie dieses:
#<doesn't work right> length(v[v==unique(v)])
hist
.table
scheint etwas langsamer alshist
. Ich wundere mich warum. Kann jemand bestätigen?order()
für die Ergebnisse verwenden. dhx <- as.data.frame(table(dummyData)); x[order(x$Freq, decreasing = TRUE), ]
Wenn Sie mehrere Faktoren haben (= ein mehrdimensionaler Datenrahmen), können Sie das
dplyr
Paket verwenden, um eindeutige Werte in jeder Kombination von Faktoren zu zählen:Es verwendet den Pipe-Operator,
%>%
um Methodenaufrufe im Datenrahmen zu verkettendata
.quelle
Es ist ein einzeiliger Ansatz mit
aggregate
.quelle
Die Funktion table () ist ein guter Weg, wie Chase vorgeschlagen hat. Wenn Sie einen großen Datensatz analysieren, können Sie alternativ die .N-Funktion in einem datierbaren Paket verwenden.
Stellen Sie sicher, dass Sie das Datentabellenpaket von installiert haben
Code:
quelle
Verwenden Sie, um einen nicht dimensionierten Ganzzahlvektor zu erhalten, der die Anzahl der eindeutigen Werte enthält
c()
.Dies kann nützlich sein, wenn Sie die Anzahl der eindeutigen Werte in eine andere Funktion eingeben müssen. Sie ist kürzer und idiomatischer als die
t(as.data.frame(table(dummyData))[,2]
in einem Kommentar zu Chases Antwort veröffentlichten. Vielen Dank an Ricardo Saporta, der mich hier darauf hingewiesen hat .quelle
Das funktioniert bei mir. Nimm deinen Vektor
v
length(summary(as.factor(v),maxsum=50000))
Kommentar: Stellen Sie maxsum so ein, dass die Anzahl der eindeutigen Werte erfasst wird
oder mit dem
magrittr
Paketv %>% as.factor %>% summary(maxsum=50000) %>% length
quelle
Wenn Sie die Anzahl der eindeutigen Werte als zusätzliche Spalte im Datenrahmen mit Ihren Werten benötigen (eine Spalte, die beispielsweise die Stichprobengröße darstellt), bietet plyr eine übersichtliche Möglichkeit:
quelle
ddply(data_frame, .(v), count)
. Es lohnt sich auch, deutlich zu machen, dass Sie einenlibrary("plyr")
Anruf benötigen , damit dieddply
Arbeit funktioniert.transform
anstattmutate
bei der Verwendungplyr
.Es
summary()
würde auch funktionieren , die Werte kategorisch zu machen und aufzurufen .quelle
Sie können auch versuchen, ein
tidyverse
quelle
Wenn Sie eine eindeutige Ausführung auf einem data.frame (z. B. train.data) ausführen und auch die Anzahl erhalten möchten (die als Gewichtung in Klassifizierern verwendet werden kann), können Sie Folgendes tun:
quelle
Länge (eindeutig (df $ col)) ist der einfachste Weg, den ich sehen kann.
quelle
quelle