2016-07-21 5 views
3

Ich versuche, einen einfachen Weg zu erhalten, um die Anzahl der Einträge in einer Spalte eines Datenrahmens zu zählen. Zum Beispiel gibt es in dem Irisdatenrahmen 150 Zeilen, wobei eine der Spalten Spezies ist, von denen es 3 verschiedene Arten gibt. Ich möchte in der Lage sein, diesen Codecode auszuführen und festzustellen, dass es in dieser Spalte 3 verschiedene Arten gibt. Es ist mir egal, wie viele Zeilen jeder dieser eindeutigen Einträge entspricht, wie viele verschiedene Variablen es gibt, was ich hauptsächlich in meinen Recherchen gefunden habe.Anzahl der eindeutigen Variablen in Spalte des Datenrahmens

Ich war so etwas wie dieses Denken:

df <- iris 
choices <- count(unique(iris$Species)) 

Hat da dies eine Lösung so einfach existieren? Ich habe mir diese Posts angeschaut, aber sie untersuchen entweder den gesamten Datenrahmen und nicht eine einzige Spalte in diesem Datenrahmen oder bieten eine kompliziertere Lösung, als ich mir erhofft habe.

count number of instances in data frame

Count number of occurrences of categorical variables in data frame (R)

How to count number of unique character vectors within a subset of data

+1

Versuchen Sie 'Entscheidungen <- Länge (einzigartig (Iris $ Species)) ' –

+0

@ImranAli das war perfekt, solange ich angegeben' Entscheidungen <- as.numeric (Länge (einzigartig (Iris $ Species))) Wenn Sie Ihren Kommentar eine Antwort machen, werde ich es als richtig markieren. – User247365

+0

Ich habe meinen Kommentar als Antwort hinzugefügt –

Antwort

0

Folgendes sollte die Arbeit machen:

choices <- length(unique(iris$Species)) 
2

Wenn Ihre Notwendigkeit die Anzahl der eindeutigen Instanzen für jede Spalte Ihrer data.frame zu zählen ist, können Sie sapply verwenden:

sapply(iris, function(x) length(unique(x))) 
#### Sepal.Length Sepal.Width Petal.Length Petal.Width  Species 
#### 35   23   43   22    3 

Für nur eine bestimmte Kolumne, der von @Imran Ali vorgeschlagene Code (in der Komm Ens) ist völlig in Ordnung.

0

Eine weitere Möglichkeit, eindeutige Werte für alle Spalten in 'Iris' zu zählen:

> df <- iris 

> df$Species <- as.character(df$Species) 

> aggregate(values ~ ind, unique(stack(df)), length) 
      ind values 
1 Petal.Length  43 
2 Petal.Width  22 
3 Sepal.Length  35 
4 Sepal.Width  23 
5  Species  3 
> 
1

Wenn wir dplyr verwenden, n_distinct würde die Zahl bekommen der einzelnen Elemente in jeder Spalte

library(dplyr) 
iris %>% 
     summarise_each(funs(n_distinct)) 
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
#1   35   23   43   22  3 
Verwandte Themen