В моей строке данных есть одно значение в каждой строке, содержащей две другие переменные.R: найти относительный вес внутри каждой группы и всего кадра данных
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
Как найти относительный вес для каждого стиля в каждой группе автомобилей, а также относительный вес для каждого стиля над всеми данными? Вот желаемый результат (# комментариев на право не нужен, но добавил для ясности здесь показаны общие вычисления веса):
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
Моя попытка только ниже преуспевает расчета общего веса. Как получить желаемый результат в пределах одного dplyr трубопровода:
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, но что-то вроде 'ДФ%>% group_by (стиль, автомобиль)%>% мутировать (style_for_car = сумма (стоимость)/sum (. $ value [. $ car == car]))%>% group_by (style)%>% mutate (style_total = sum (value)/sum (. $ value)) ', возможно – alistaire
Можете ли вы исправить свои пример? У вас есть '6' в 5-й строке в построении' df', а затем '16' на выходе. – thelatemail
Спасибо @thelatemail! Готово. – Irakli