私のデータフレームには、他の2つの変数を含む各行に1つの値があります。
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