【发布时间】:2018-08-18 03:04:42
【问题描述】:
我有一组个人,我正在向他们分发物品,以努力实现在个人之间平均分配总物品。
每个人只能收到特定类型的物品。
物品的起始分布不均等。
每种类型的可用物品数量是已知的,并且必须完全用尽。
df 包含人员数据的示例格式。请注意,Chuck 总共有 14 件物品,而不是 14 个球棒和 14 个手套。
df<-data.frame(person=c("Chuck","Walter","Mickey","Vince","Walter","Mickey","Vince","Chuck"),alloweditem=c("bat","bat","bat","bat","ball","ball","glove","glove"),startingtotalitemspossessed=c(14,9,7,12,9,7,12,14))
otherdf 包含需要分配的项目和编号的示例格式
otherdf<-data.frame(item=c("bat","ball","glove"),numberneedingassignment=c(3,4,7))
有没有最好的方法来编码这种形式的项目分布?我想的步骤是:
检查可以接收给定项目的人分配的项目总数最少。随意打破平局。
将给定项目的 1 个分配给此人。
更新收货人的
startingtotalitemspossessed。更新剩余待分配项目的编号。
- 如果剩余总数为 0,则停止给定项目的循环,并移至下一个项目。
下面是部分表示,就像我想象的那样,它是循环内的一个视图,从左到右。
注意:物品数量和人数非常多。如果可能的话,一种可以扩展到任何给定数量的人或物品的方法将是理想的!
提前感谢您的帮助!
【问题讨论】:
-
stackoverflow.com/questions/11254452/… 似乎很相似(?),但我不清楚如何调整以适应这个问题。
标签: r