Unterhalb der Spalte Mittelwert über eine Liste von Datenrahmen in R

7

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?

    
Anshu 04.05.2015, 16:55
quelle

4 Antworten

3

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
arvi1000 04.05.2015, 17:10
quelle
7

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 :

berechnen %Vor%

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%     
docendo discimus 04.05.2015 17:19
quelle
6
%Vor%     
Gregor 04.05.2015 17:02
quelle
3

Wenn Sie darauf bestehen, alle in der Liste zu behalten:

%Vor%

out ist ein list data.frames für jedes Land und colmeans über Variablen. Wie alles in einem data.frame zusammenfasst:

%Vor%     
vagabond 04.05.2015 17:13
quelle