Hier ist, was ich versuche zu tun. Mein Datenrahmen hat eine Faktorvariable, "Land", und ich möchte den Datenrahmen basierend auf dem Land aufteilen. Dann möchte ich die Spalte Mittelwert über jede Variable für den Datenrahmen jedes Landes nehmen.
Daten hier: Ссылка
Ich habe das bisher gemacht ...
%Vor%(Ich schließe die 38. und 39. Spalte nicht ein, weil das Faktoren sind.)
Ich habe das gelesen ( Funktion über mehrere Listen ) , was mich denken lässt, ist die Antwort hier ... aber ich bekomme diesen Fehler:
%Vor%Vielleicht formatiere ich es falsch?
Eine data.table Antwort:
%Vor%Jetzt sauberere Syntax mit Abwahl in .SDcols, dank Benutzer Arun
Um zu erklären, was hier passiert:
setDT(df1)
macht data.frame zu einer data.table lapply(.SD, mean)
für jede Spalte in der Teilmenge der Daten, nehmen Sie mean
by = county
macht das nach Gruppen aufgeteilt nach country
.SDcols = -c('age', 'gender')
omit age
und gender
Spalten aus der Teilmenge von Daten In Base R ist es einfach, aggregate
zu verwenden, ohne zuvor den data.frame in eine Liste zu übernehmen. Hier ist ein Beispiel, das die integrierten Iris-Daten verwendet, in denen Sie die split
aller Variablen mit Ausnahme der Variablen in der ersten und zweiten Spalte nach der Gruppe mean
:
Mit Species
in% .
wird angegeben, dass Sie alle verbleibenden Spalten von data.frame mit Ausnahme der Gruppierungsvariablen (in diesem Fall "Species") verwenden möchten. Und weil Sie aggregate
als Eingabedaten angeben, werden auch die erste und zweite Spalte nicht verwendet.
Für Ihre Daten sollte es dann etwa so aussehen:
%Vor%Tags und Links r list dataframe aggregate group-summaries