Ich benutze den mtcars
Datensatz. Ich möchte die Anzahl der Datensätze für eine bestimmte Datenkombination ermitteln. Etwas sehr Ähnliches wie die count(*)
Group by-Klausel in SQL. ddply()
von plyr arbeitet für mich
library(plyr)
ddply(mtcars, .(cyl,gear),nrow)
hat Ausgabe
cyl gear V1
1 4 3 1
2 4 4 8
3 4 5 2
4 6 3 2
5 6 4 4
6 6 5 1
7 8 3 12
8 8 5 2
Mit diesem Code
library(dplyr)
g <- group_by(mtcars, cyl, gear)
summarise(g, length(gear))
hat Ausgabe
length(cyl)
1 32
Ich habe verschiedene Funktionen gefunden, an die ich weitergeben kann, summarise()
aber keine scheint für mich zu funktionieren. Eine Funktion, die ich gefunden habe, ist die sum(G)
, die zurückgegeben wurde
Error in eval(expr, envir, enclos) : object 'G' not found
Versucht mit n()
, die zurückgegeben
Error in n() : This function should not be called directly
Was mache ich falsch? Wie kann ich group_by()
/ summarise()
zur Arbeit für mich?
ddply
. Auf welcher Version von dplyr bist du? Versuchen Sie zu aktualisieren?Antworten:
n()
In dplyr gibt es eine spezielle Funktion zum Zählen von Zeilen (möglicherweise innerhalb von Gruppen):library(dplyr) mtcars %>% group_by(cyl, gear) %>% summarise(n = n()) #Source: local data frame [8 x 3] #Groups: cyl [?] # # cyl gear n # (dbl) (dbl) (int) #1 4 3 1 #2 4 4 8 #3 4 5 2 #4 6 3 2 #5 6 4 4 #6 6 5 1 #7 8 3 12 #8 8 5 2
Dplyr bietet aber auch eine praktische
count
Funktion, die genau das Gleiche mit weniger Eingabe tut:count(mtcars, cyl, gear) # or mtcars %>% count(cyl, gear) #Source: local data frame [8 x 3] #Groups: cyl [?] # # cyl gear n # (dbl) (dbl) (int) #1 4 3 1 #2 4 4 8 #3 4 5 2 #4 6 3 2 #5 6 4 4 #6 6 5 1 #7 8 3 12 #8 8 5 2
quelle
Ein anderer Ansatz ist die Verwendung der Doppelpunkte:
mtcars %>% dplyr::group_by(cyl, gear) %>% dplyr::summarise(length(gear))
quelle
Ich denke, was Sie suchen, ist wie folgt.
Dies verwendet das Paket dplyr. Dies ist im Wesentlichen die Langhandversion der count () -Lösung von docendo discimus.
quelle
Eine weitere Option, die nicht unbedingt eleganter ist, aber nicht auf eine bestimmte Spalte verweisen muss:
quelle
nrow
den Datensatz, nicht die Gruppe