Versuchen, meinen Kopf um dieses dplyr
Ding zu bekommen. Ich habe einen sortierten Datenrahmen, den ich basierend auf einer Variablen gruppieren möchte. Die Gruppen müssen jedoch so konstruiert werden, dass jede von ihnen eine minimale Summe von 30 auf der Gruppierungsvariablen hat.Verwenden von dplyr für dynamische group_by
Betrachten Sie dieses kleine Beispiel Datenrahmen:
df1 <- matrix(data = c(05,0.9,95,12,0.8,31,
16,0.8,28,17,0.7,10,
23,0.8,11,55,0.6,9,
56,0.5,12,57,0.2,1,
59,0.4,1),
ncol = 3,
byrow = TRUE,
dimnames = list(c(1:9),
c('freq', 'mean', 'count')
)
)
Nun, ich gruppieren möchten, so dass count
eine Summe von mindestens 30 freq
und mean
haben sollte dann in eine weighted.mean
zusammengelegt werden, wobei die Gewichte der ist count
Werte. Beachten Sie, dass der letzte "bin" eine Summe von 32 nach Zeile 7 erreicht, aber da Zeile 8: 9 nur zu 2 addiert wird, füge ich sie zum letzten "bin" hinzu.
Wie so:
freq mean count
5.00 0.90 95
12.00 0.80 31
16.26 0.77 38
45.18 0.61 34
Die einfachen Zusammenfassungs mit dplyr
sind kein Problem, aber das kann ich nicht herausfinden. Ich denke, die die Lösung irgendwo hier versteckt:
Dynamic Grouping in R | Grouping based on condition on applied function
Aber wie es um meine Situation anzuwenden entgeht mir.