Mein Datenrahmen hat einen Wert in jeder Zeile, der zwei andere Variablen enthält.R: Finden Sie das relative Gewicht innerhalb jeder Gruppe und innerhalb des gesamten Datenrahmens
library(tidyverse)
df <- data_frame(car=c('A','A','A','B','B'), style=c('aa','bb','aa','aa','cc'), value=c(3,2,5,4,16))
car style value
A aa 3
A bb 2
A aa 5
B aa 4
B cc 16
Wie für jeden Stil in jeder Fahrzeuggruppe, und das relative Gewicht das relative Gewicht für jeden Stil finden über alle Daten? Hier ist die gewünschte Ausgabe (# Kommentare auf der rechten Seite nicht benötigt, aber hier aus Gründen der Übersichtlichkeit zeigt die Gesamtgewicht Berechnungen hinzugefügt):
car style value style_for_car style_total # total value count is 30
A aa 3 0.80 0.40 # (3+5+4)/30 = 0.40
A bb 2 0.20 0.067 # 2/30 = 0.067
A aa 5 0.80 0.40
B aa 4 0.20 0.40
B cc 16 0.80 0.533
Mein Versuch, unten nur das Gesamtgewicht bei der Berechnung erfolgreich ist. Wie die gewünschte Ausgabe innerhalb der gleichen dplyr Pipeline erhalten:
df %>%
group_by(style) %>%
mutate(style_total = sum(value)/sum(.$value))
car style value style_total
A aa 3 0.4000
A bb 2 0.0667
A aa 5 0.4000
B aa 4 0.4000
B cc 16 0.5333
Hacky, aber so etwas wie 'df%>% group_by (Stil, Auto)%>% mutiert (style_for_car = Summe (Wert)/sum (. $ value [. $ car == auto]))%>% group_by (style)%>% muate (style_total = summe (wert)/summe (. $ value)) ', vielleicht – alistaire
Kannst du dein reparieren? Beispiel? Sie haben '6' in der 5. Reihe in der Konstruktion von' df', dann '16' in der Ausgabe. – thelatemail
Danke @thelatemail! Erledigt. – Irakli