Mein Dataset das folgende Formularberechnen bedingten Mittelwert eines Datenrahmen-Vektor
Name year val
”a” 1 25
”a” 1 75
”a” 2 20
”a” 2 40
”a” 2 60
”a” 3 50
”b” 1 20
”b” 2 10
”b” 2 20
”b” 2 30
”b” 3 40
”b” 3 60
So besteht aus einem Namen, Jahr und einen Wert hat. Ich möchte den Durchschnitt der Werte (val
) für jedes Jahr finden und gruppiert durch Name. Das heißt, ich bin interessiert
Name year average terms in the average
”a” 1 50 2
”a” 2 40 3
”a” 3 NA 1
”b” 1 NA 1
”b” 2 20 3
”b” 3 50 2
Im Durchschnitt in immer -column es NA
sagt, wenn es weniger als 2 Begriffe und ich habe weiterhin eine vierte Spalte, die die Anzahl der Begriffe enthält, die in dem Durchschnitt hinzugefügt.
Dies ist eine ganze Reihe von Operationen und sie können natürlich in einem for
-Loop durchgeführt werden. Aber was ist das professionelle R
-way, um ein solches Problem zu lösen?
Die Daten
df = structure(list(name = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 2L), .Label = c("a", "b"), class = "factor"),
year = c(1, 1, 2, 2, 2, 3, 1, 2, 2, 2, 3, 3), val = c(25,
75, 20, 40, 60, 50, 20, 10, 20, 30, 40, 60)), .Names = c("name",
"year", "val"), row.names = c(NA, -12L), class = "data.frame")
Sollte nicht der Durchschnitt für name = 'a' year = 2 40 sein? – G5W
Der von Ihnen bereitgestellte df ist kein data.frame. – Frank