0

我对以下主题有疑问。

使用 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 个月。我得到了一个带有洗衣机型号的数据框,它将在接下来的 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:(许多相同的组件被不同的模型使用)

希望你明白我的意思,并能帮助我解决这个问题。

谢谢你=)

编辑:

我无法遵循您的所有步骤:

也许这个想法也不错,但我不知道该怎么做:

也许可以将每个生产的模型(生产)与使用的组件合并。(考虑到生产数量和每台洗衣机需要的数量)。

我更喜欢的输出是,为每个带有所需组件的生产模型自动获取数据帧。

在下一步中,它应该能够将这些数据与 Comp.Stock 合并,以查看需要哪个组件的频率并将其与库存进行比较。

你对这种方式有什么想法吗?

也许我对所提出的方式很愚蠢......我真的需要一种自动方式,因为有超过 4k 不同的组件和超过 180 种不同型号的洗衣机。

谢谢

Comp.Stock 以及所有使用过的模型及其数量(生产)

4

1 回答 1

5

您需要将模型名称作为第一个 data.frame 中的列(匹配Production

Model.A$pr.Models <- 'MODEL.A'

然后就可以合并了。请注意,有两个“数量”列,您不想按这些列合并:

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 
于 2013-05-13T02:29:52.380 回答