Zählt die Anzahl der Zeilen in jeder Gruppe
Ich habe einen dataframe, und ich möchte die Anzahl der Zeilen in jeder Gruppe. Ich OIN verwenden Sie die aggregate
- Funktion, um die Summe von Daten wie folgt:
df2 <- aggregate(x ~ Year + Month, data = df1, sum)
Nun möchte ich zählen Beobachtungen aber können nicht scheinen zu finden, das richtige argument für FUN
. Intuitiv dachte ich, es würde sein, wie folgt:
df2 <- aggregate(x ~ Year + Month, data = df1, count)
Aber kein solches Glück.
Irgendwelche Ideen?
Einige Spielzeug-Daten:
set.seed(2)
df1 <- data.frame(x = 1:20,
Year = sample(2012:2014, 20, replace = TRUE),
Month = sample(month.abb[1:3], 20, replace = TRUE))
nrow
, NROW
, length
...Ich lese diese Frage als Frage für eine unterhaltsame Art und Weise zu zählen, die Dinge (im Gegensatz zu den vielen unfun Möglichkeiten, denke ich.)
nrow
nicht für mich arbeiten, aber NROW
und length
fein gearbeitet. +1InformationsquelleAutor MikeTP | 2012-03-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es auch
df2 <- count(x, c('Year','Month'))
(plyr package)Ich würde
cbind
die Ergebnisseaggregate(Sepal.Length ~ Species, iris, mean)
undaggregate(Sepal.Length ~ Species, iris, length)
Ich habe es getan, aber es scheint, dass ich 2 mal jede Spalte außer dem einen, das aggregiert; also ich habe eine Seriendruck auf Sie und es scheint ok zu sein
Ich weiß es nicht, aber dies könnte nützlich sein, als gut...
df %>% group_by(group, variable) %>% mutate(count = n())
Ja dplyr ist die beste Praxis jetzt.
InformationsquelleAutor geotheory
Folgende @Joshua ' s Vorschlag, hier ist einer, der, wie Sie vielleicht die Anzahl der Beobachtungen in Ihrer
df
dataframe, woYear
= 2007 undMonth
= Nov (vorausgesetzt, Sie Spalten):und mit
aggregate
nach @GregSnow:InformationsquelleAutor Ben
Können wir auch
dplyr
.Zunächst einige Daten:
Nun der Graf:
Können wir auch eine etwas längere version mit Keder und die
n()
Funktion:oder die
tally
Funktion:InformationsquelleAutor jeremycg
Eine alte Frage ohne
data.table
Lösung. So hier geht...Mit
.N
InformationsquelleAutor mnel
Die einfache option für die Verwendung mit
aggregate
ist dielength
- Funktion, die Ihnen die Länge des Vektors in der Teilmenge. Manchmal ist ein wenig mehr robust ist die Verwendungfunction(x) sum( !is.na(x) )
.InformationsquelleAutor Greg Snow
Alternative zu den
aggregate()
- Funktion wäre in diesem Falltable()
mitas.data.frame()
, das würde auch zeigen, welche Kombinationen aus Jahr und Monat zugeordnet sind, null vorkommenOhne die null vorkommenden Kombinationen
InformationsquelleAutor BenBarnes
Erstellen Sie eine neue variable
Count
mit einem Wert von 1 für jede Zeile:Aggregieren dataframe, Summen durch die
Count
Spalte:InformationsquelleAutor Leroy Tyrone
Für meine Aggregationen ich in der Regel bis Ende sehen zu wollen bedeutet, und "wie groß ist diese Gruppe" (ein.k.ein. Länge).
Also das ist mein praktisches snippet für jene Gelegenheiten;
InformationsquelleAutor maze
sql - Lösung mit
sqldf
Paket:InformationsquelleAutor M-M
Anbetracht @Ben die Antwort, die R würde einen Fehler auslösen, wenn
df1
nicht enthaltenx
Spalte. Aber es kann gelöst werden elegant mitpaste
:Ähnlich, es kann verallgemeinert werden, wenn mehr als zwei Variablen verwendet werden, in der Gruppierung:
InformationsquelleAutor paudan
Können Sie
by
Funktionen wieby(df1$Year, df1$Month, count)
produzieren, die eine Liste von benötigten aggregation.Die Ausgabe Aussehen wird,
InformationsquelleAutor helcode
Gibt es viele wunderbare Antworten hier schon, aber ich wollte zu werfen, in 1 option für diejenigen, die zum hinzufügen einer neuen Spalte zu der original Datensatz enthält die Anzahl, wie oft die Zeile wiederholt wird.
Derselben erreicht werden könnte, durch die Kombination von einer der oben genannten Antworten mit der
merge()
Funktion.InformationsquelleAutor filups21