R按组计算列份额

时间:2019-10-18 10:41:49

标签: r dplyr

我有以下示例数据帧DF:

Group id    absolute
A     123   600
A     1234  300
A     12345 100
B     321   300
B     4321  300
B     5321  400

,并希望进行转换以计算ID所属组中ID的相对份额

Group id    share
A     123   60%
A     1234  30%
A     12345 10%
B     321   30%
B     4321  30%
B     5321  40%

我尝试过

DF%>%group_by(Group,id)%>%summarise(share=absolute/colSums(absolute))

1 个答案:

答案 0 :(得分:1)

dplyr将在这里提供帮助。您只需要将绝对值除以特定组的绝对值之和即可。

x %>%
  group_by(Group_id) %>%
  mutate(new = (absolute/sum(absolute)) * 100)


Group_id    id  absolute    new
<fct>   <dbl>   <dbl>   <dbl>
A   123 600 60
A   1234    300 30
A   12345   100 10
B   321 300 30
B   4321    300 30
B   5321    400 40