我对下面的主题有一个问题。
使用Excel后,这样做的工作量很大。现在我想以一种自动的方式用R来做这件事。
我有不同型号的洗衣机:
对于每个型号,我都有一个包含所有必需组件的data.frame。以1个型号为例
Component = c("A","B","C","D","E","F","G","H","I","J")
Number = c(1,1,1,2,4,1,1,1,2,3)
Model.A= data.frame(Component,Quantity)作为第二个信息,我有一个包含所有组件的data.frame,所有型号都使用这些组件,另外还有这些组件的实际库存。
Component = c("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")
Stock = c(100,102,103,105,1800,500,600,400,50,80,700,900,600,520,35,65,78,95,92,50,36,34,96,74,5,76)
Comp.Stock = data.frame(Component,Stock)第三条也是最后一条信息是关于每周生产计划的。我有4周的生产计划=1个月的计划。我得到了一个洗衣机型号的data.frame,它将在接下来的4周内生产,以及它们的数量。
pr.Models= c("MODEL.A","MODEL.B","MODEL.C","MODEL.D")
Quantity= c(15000,1000,18000,16000,5000)
Production= data.frame(pr.Models,Quantity)我现在的问题是,将这些信息组合在一起,我可以将生成的模型(最后的信息)与组件进行比较。首先,每个型号都有自己使用的组件,另外还有data.frame,它包含所有组件和库存的信息。
其目的是获得信息和警告,如果组件库存不足以从生产计划中生产模型。
Hind:(许多相同的组件被不同的模型使用)
希望你能理解我的意思,并通过这个问题来帮助我。
谢谢=)
编辑:
我不能跟上你所有的步骤:
也许这个想法也是好的,但我需要一个如何做的后盾:
也许可以将每个生产的模型(生产)与使用的组件合并。(考虑生产数量和每台洗衣机所需的数量)。
我更喜欢的输出是,为每个具有所需组件的生产模型自动地gert数据帧。
在下一步中,它应该能够将这些数据与Comp.Stock合并,以查看需要哪些组件的频率,并将其与库存进行比较。
你对这条路有什么想法吗?
也许我对于呈现的方式来说太愚蠢了。我真的需要一种自动化的方式,因为有超过4k个不同的部件和超过180种不同型号的洗衣机。
谢谢
额外的Comp.Stock和所有使用的型号及其质量(生产)
发布于 2013-05-13 10:29:52
您需要将模型名作为第一个data.frame中的一列(以便与Production匹配)
Model.A$pr.Models <- 'MODEL.A'然后就可以合并了。请注意,有两个"Quantity“列,您不希望按这两个列进行合并:
merged <- merge(merge(Model.A, Comp.Stock),Production, by='pr.Models')Extra是您在生产后将拥有的数量:
transform(transform(merged, Needed = Quantity.x * Quantity.y), Extra = Stock - Needed)
## pr.Models Component Quantity.x Stock Quantity.y Needed Extra
## 1 MODEL.A A 1 100 15000 15000 -14900
## 2 MODEL.A B 1 102 15000 15000 -14898
## 3 MODEL.A C 1 103 15000 15000 -14897
## 4 MODEL.A D 2 105 15000 30000 -29895
## 5 MODEL.A E 4 1800 15000 60000 -58200
## 6 MODEL.A F 1 500 15000 15000 -14500
## 7 MODEL.A G 1 600 15000 15000 -14400
## 8 MODEL.A H 1 400 15000 15000 -14600
## 9 MODEL.A I 2 50 15000 30000 -29950
## 10 MODEL.A J 3 80 15000 45000 -44920如果Extra为负,则需要更多部件。你是个严重的缺陷。
transform(transform(merged, Needed = Quantity.x * Quantity.y), Extra = Stock - Needed)$Extra < 0
## [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE任何部分都不够。
作为函数:
Not.Enough.Parts <- function(Model, Comp.Stock, Production) {
Model$pr.Models <- toupper(substitute(Model))
merged <- merge(merge(Model, Comp.Stock),Production, by='pr.Models')
extra <- transform(transform(merged, Needed = Quantity.x * Quantity.y), Extra = Stock - Needed)
retval <- extra$Extra < 0
names(retval) <- extra$Component
return(retval)
}
Not.Enough.Parts(Model.A, Comp.Stock, Production)
## A B C D E F G H I J
## TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE https://stackoverflow.com/questions/16513887
复制相似问题