如何在同一个表上多次聚合数据

时间:2015-10-31 22:25:05

标签: r aggregate

我在R工作并有一个包含3列的列表:

Fruit     Drawer      Amount
Banana    Top         1
Peach     Top         2
Apple     Top         3
Banana    Mid         4
Peach     Mid         5
Apple     Mid         6
Banana    Bottom      7
Peach     Bottom      8
Apple     Bottom      9

我想在每个抽屉(例如顶部)和总水果(所有香蕉)中创造最小比例的水果类型(例如香蕉)。

我正在使用桌子:

x <- table(fruits)

但是我得到了一种我不知道如何使用的数据。

最终,我希望每个抽屉里的“香蕉”除以所有抽屉中的“总香蕉”。我想我可以逐列完成,但我相信有更好的方法可以解决这个问题。有什么建议吗?

对于任何礼仪不幸,我很抱歉,我没有长时间编程。

感谢。

1 个答案:

答案 0 :(得分:1)

Do you want something like this:

library(dplyr)

fruit__drawer = 
"Fruit     Drawer      Amount
Banana    Top         1
Peach     Top         2
Apple     Top         3
Banana    Mid         4
Peach     Mid         5
Apple     Mid         6
Banana    Bottom      7
Peach     Bottom      8
Apple     Bottom      9" %>% 
  read.table(text = . , header = TRUE)

fruit =
  fruit__drawer %>%
  group_by(Fruit) %>%
  summarize(Amount.fruit = sum(Amount)) %>%
  mutate(Proportion.overall = Amount.fruit / sum(Amount.fruit))

result = 
  fruit__drawer %>%
  left_join(fruit) %>%
  group_by(Drawer) %>%
  mutate(Proportion= Amount/sum(Amount),
         Proportion.ratio = Proportion/Proportion.overall)