9 Stimmen

ddply aggregierte Spaltennamen

Ich verwende ddply, um meine Daten zu aggregieren, habe aber keine elegante Möglichkeit gefunden, dem Ausgabedatenrahmen Spaltennamen zuzuweisen.

Im Moment tue ich dies:

agg_data <- ddply(raw_data, .(id, date, classification), nrow)
names(agg_data)[4] <- "no_entries"

und dies

agg_data <- ddply(agg_data, .(classification, date), colwise(mean, .(no_entries)) )
names(agg_data)[3] <- "avg_no_entries"

Gibt es eine bessere, elegantere Möglichkeit, dies zu tun?

9voto

JD Long Punkte 57096

Die generische Form, die ich häufig verwende, ist:

 ddply(raw_data, .(id, date, classification), function(x) data.frame( no_entries=nrow(x) )

Ich verwende anonyme Funktionen in meiner ddply Anweisungen fast die ganze Zeit, so dass die obige Redewendung gut mit anonymen Funktionen zusammenpasst. Dies ist nicht die prägnanteste Art, eine Funktion wie nrow() aber bei Funktionen, bei denen ich mehrere Argumente übergebe, mag ich es sehr.

8voto

joran Punkte 163857

Y summarise :

agg_data <- ddply(raw_data, .(id, date, classification), summarise, "no_entries" = nrow(piece))

oder Sie können verwenden length(<column_name>) si nrow(piece) funktioniert nicht. Hier ist zum Beispiel ein Beispiel, das von jedem ausgeführt werden kann:

ddply(baseball, .(year), summarise, newColumn = nrow(piece))

oder

ddply(baseball, .(year), summarise, newColumn = length(year))

EDITAR

Oder wie Joshua sagt, die Version in Großbuchstaben, NROW übernimmt die Kontrolle für Sie.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X