You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中建模制造流程:剔除非工作日时间的技术咨询

制造车间工序时长分析问题

背景需求

我经营一家小型制造车间,需要分析各工序的平均加工时长及工序间的平均转运时长。生产并非每日进行(周末、节假日、设备维护等),核心需求是计算实际工作时长而非挂钟时长。

这个问题和常见的“判断日期是否为周末”问题不同:

  • 前者仅针对周末,我需要剔除所有无工作的日期;
  • 前者仅识别周末日期,我需要从数据中扣除非工作时间对应的分钟数。

数据结构

我拥有的DataFrame包含以下字段:

列名内容数据类型
item制造的产品char
lotname批次名称char
tool工序使用的设备char
startTime工序开始时间datetime
endTime工序完成时间datetime

现有代码

计算各工序平均加工时长

library(tidyverse)
library(data.table)

processTimes <- processTimes %>%
  filter(item == "item1") %>%
  group_by(lotname) %>%
  arrange(startTime) %>%
  mutate(toTool = lead(tool),  # 下一道工序的设备
         processingTime = as.numeric(difftime(endTime, startTime, units = "mins")),
         nextStartTime = lead(startTime),
         transitTime = as.numeric(difftime(nextStartTime, endTime, units = "mins")),
  ) %>% 
  filter(!is.na(toTool)) # 最后一道工序没有下一个设备,故剔除

processing_summary <- processTimes %>%
  group_by(lotname, tool) %>%
  summarise(
    AvgProcessingTime = mean(processingTime, na.rm = TRUE),
    SEM_proc = sd(processingTime, na.rm = TRUE) / sqrt(n()),
    .groups = 'drop'  
  )

计算工序间平均转运时长

transit_summary <- processTimes %>%
  group_by(lotname, tool) %>%
  summarise(
    avgTransitTime = mean(transitTime, na.rm = TRUE),
    SEM_transit = sd(transitTime, na.rm = TRUE) / sqrt(n()),
    .groups = 'drop'  # 汇总后取消分组结构
  ) 

识别有工作的日期

df <- processTimes %>%
  mutate(date = as.Date(startTime)) %>%
  add_count(date, name = "steps_count")

all_dates <- data.frame(date = seq(min(df$date), max(df$date), by = "day"))

# 将日期序列与工序计数数据合并
df_all_dates <- all_dates %>%
  left_join(df %>% select(date, steps_count) %>% distinct(), by = "date") %>%
  mutate(steps_count = ifelse(is.na(steps_count), 0, steps_count))

# 过滤出有工作的日期
df_filtered <- df_all_dates %>%
  filter(steps_count > 0)

技术问题

  1. 如何剔除非工作日的时间?
    我已经得到分钟单位的加工和转运时长,但需要扣除对应非工作日的时长。复杂点在于:部分日期看似未处理该产品,但可能是工序跨天或产品在后续设备等待,因此不能仅看该产品的日期,需参考所有数据。

  2. 如何确保转运时长不会连接某批次的最后一道工序与下一批次的第一道工序?
    使用group_by(lotname)是否能解决此问题?

示例数据

itemlotnametoolstartTimeendTime
Item1Lot1Tool 22025-01-03 18:31:592025-01-03 19:07:16
Item1Lot1Tool 22025-01-05 06:04:052025-01-05 06:26:17
Item1Lot1Tool 52025-01-10 03:37:302025-01-10 04:11:28
Item1Lot1Tool 22025-01-11 10:28:292025-01-11 11:09:26
Item1Lot1Tool 32025-01-14 08:26:252025-01-14 08:26:38
Item1Lot1Tool 32025-01-15 06:06:402025-01-15 06:41:22
Item1Lot1Tool 52025-01-18 13:24:152025-01-18 13:56:14
Item1Lot1Tool 52025-01-19 09:52:462025-01-19 10:01:22
Item1Lot1Tool 22025-01-20 20:07:422025-01-20 21:03:32
Item1Lot1Tool 32025-01-22 16:33:512025-01-22 16:46:26
Item1Lot2Tool 12025-01-03 22:20:492025-01-03 22:32:00
Item1Lot2Tool 42025-01-05 12:32:382025-01-05 13:15:43
Item1Lot2Tool 32025-01-08 20:14:482025-01-08 20:50:57
Item1Lot2Tool 32025-01-09 09:37:532025-01-09 10:33:51
Item1Lot2Tool 42025-01-14 11:11:072025-01-14 11:29:40
Item1Lot2Tool 42025-01-19 06:56:302025-01-19 07:47:01
Item1Lot2Tool 22025-01-22 14:12:212025-01-22 15:01:57
Item1Lot2Tool 32025-01-25 08:24:162025-01-25 08:48:24
Item1Lot2Tool 12025-01-25 08:26:472025-01-25 09:05:46
Item1Lot2Tool 22025-01-25 09:17:212025-01-25 09:34:07

内容的提问来源于stack exchange,提问作者eBerm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 23:14:54