我试图按组计算一行的百分比,但我似乎没有得到它。
数据
df = data.frame(ID = c(1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L, 4L),
ID_name = c("AA", "AA", "BB", "BB", "CC", "CC", "DD", "DD", "DD"),
Volume = c(10L, 20L, 30L, 50L, 50L, 40L, 20L, 30L, 10L))
我希望它创建一个新列(Percentage),它将按ID计算音量比例
理想数据将如下所示(对于所有ID,但现在我只显示ID = 1)
ID ID_Name Volume Percentage
1 AA 10 0.33
1 AA 20 0.67
我尝试了这段代码,但它似乎无法正常工作
df %>%
group_by(ID) %>%
mutate(PercVol = Volume/sum(Volume))
代码输出:
ID ID_name Volume PercVol
(int) (fctr) (int) (dbl)
1 1 AA 10 0.03846154
2 1 AA 20 0.07692308
3 2 BB 30 0.11538462
4 2 BB 50 0.19230769
5 3 CC 50 0.19230769
6 3 CC 40 0.15384615
7 4 DD 20 0.07692308
8 4 DD 30 0.11538462
9 4 DD 10 0.03846154