/ / Durchschnitt der Werte in Spalten in Datenrahmen? - r, Datenrahmen, Mittelwert

Durchschnitt der Werte in Spalten im Datenrahmen? - r, Datenrahmen, Mittelwert

Ich möchte den Mittelwert über einen Datenrahmen von Werten ermitteln. Zum Beispiel, wenn ich folgende Daten habe:

ID Value Status
1   10     A
2   15     B
3   20     A

Und ich möchte den Mittelwert aller Werte mit dem Status A darin ermitteln. Wie würde ich das tun

Hier ist mein Versuch:

dataframe$balance.mean(dataframe$status == "A")

Aber ich bekomme immer einen Fehler, der besagt Error: attempt to apply non-function. Kann mir jemand helfen? Vielen Dank!

Antworten:

12 für die Antwort № 1

Wenn ich Ihre Anforderung klar verstanden habe, sollte Folgendes Ihre Anforderung erfüllen:

 id<-c(1,2,3)
val<-c(10,15,20)
sta<-c("A","B","A")

df<-data.frame(id,val,sta)

mean(df$val[df$sta=="A"])

3 für die Antwort № 2

Erinnere dich daran () wird für Funktionsaufrufe verwendet, [] werden für das Subsetting verwendet. Sie rufen jetzt eine Funktion an, während tatsächlich keine Funktion vorhanden ist.

In einem allgemeineren Sinn verwende ich diese Dinge gerne plyr, obwohl data.table ist eine tolle andere Option.

library(plyr)
ddply(dataframe, .(Status), summarize, mean_value = mean(Value))

Dies wird Ihnen ein neues geben data.frame mit den Durchschnittswerten von Value für jeden eindeutigen Wert von Status.


3 für die Antwort № 3

Wie @PaulHiemstra anspielte, gibt es eine saubere Sache data.table Lösung, die wäre:

library(data.table)
DT[Status=="A", mean(val)]

woher DT <- as.data.table(your_data_frame)


oder Sie können den Schlüssel für schnellere Ergebnisse einstellen:

setkey(DT, "status")
# this will produce a data.table, not a single
DT["A", mean(val)]
# This produces a single number
DT["A"] [, mean(val)]