我在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)
但是我得到了一种我不知道如何使用的数据。
最终,我希望每个抽屉里的“香蕉”除以所有抽屉中的“总香蕉”。我想我可以逐列完成,但我相信有更好的方法可以解决这个问题。有什么建议吗?
对于任何礼仪不幸,我很抱歉,我没有长时间编程。
感谢。
答案 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)