Ich habe die d2 Datenrahmen unten, und ich möchte eine a Spalte hinzufügen, die der Durchschnitt von x nach Gruppe und Flag ist. Aber ich füge die Markierungsspalte in den Mutationscode ein und ich bin nicht sicher, wie man dann einen Durchschnitt durch Gruppe AND Markierungsfahne addiert.Spalte mit dplyr mit Mutate dann Mittelwertbildung
d = data.frame(x=c(seq(1,5,1),seq(11,15,1),100,1000),group= c(rep("A",5),rep("B",5),"A","B"))
d
d2 = d%>%
group_by(group) %>%
mutate(
U=quantile(x, 0.75) + 1.5*IQR(x),
L=quantile(x, 0.25) - 1.5*IQR(x),
flag = ifelse(x>U | x<L,1,0),
mu = mean(x)
)
as.data.frame(d2)
Ich habe ein "Ergebnis" Vektor für hinzugefügt, was das Ergebnis
x group U L flag mu result
1 1 A 8.5 -1.5 0 19.16667 3
2 2 A 8.5 -1.5 0 19.16667 3
3 3 A 8.5 -1.5 0 19.16667 3
4 4 A 8.5 -1.5 0 19.16667 3
5 5 A 8.5 -1.5 0 19.16667 3
6 11 B 18.5 8.5 0 177.50000 13
7 12 B 18.5 8.5 0 177.50000 13
8 13 B 18.5 8.5 0 177.50000 13
9 14 B 18.5 8.5 0 177.50000 13
10 15 B 18.5 8.5 0 177.50000 13
11 100 A 8.5 -1.5 1 19.16667 100
12 1000 B 18.5 8.5 1 177.50000 1000
note having group_by(group,flag)
returns
Error: unknown variable to group by : flag
Ich bin mir nicht sicher, ob ich folge. Laut deiner 'ifelse()' willst du den Mittelwert nur wenn 'flag == 1' sonst' 0'? Dies spiegelt nicht die Spalte "Ergebnis" oben wider. Ich denke, was Sie suchen, ist einfach zu Ihrem ersten Code hinzufügen '...%>% group_by (Gruppe, Flagge)%>% mutate (Ergebnis = Mittel (x))' –
Ich glaube, ich war verwirrend. Ich suche nach dem Ergebnis im Ergebnisvektor. Sehen Sie, wie es den Durchschnitt nach Gruppe und Flagge zurückgibt. Group_by (Gruppe, Flag) gibt zurück und Fehler, weil Flag noch nicht berechnet ist – user3022875