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

R语言仅使用xapply系列函数统计不同时段各班次工时高低

R 按时段统计最高工时班次实现方案

数据集构造

运行官方给出的代码生成测试数据集:

set.seed(45)
data2 <- data.frame(
  pora = sample(c("dzień", "noc"), 30, replace=TRUE), # dzień对应白班,noc对应夜班
  ZM1 = sample(1:200, 30, replace=TRUE),
  ZM2 = sample(1:200, 30, replace=TRUE),
  ZM3 = sample(1:200, 30, replace=TRUE)
)

实现代码

仅使用apply族(xapply系列)函数完成统计,最终输出为包含2个tibble的列表,分别对应两个时段的最高工时班次统计结果:

library(tibble)

# 按时段拆分数据集后遍历统计
stat_result <- lapply(split(data2, data2$pora), function(sub_data) {
  # 计算各班次总工时
  shift_total <- sapply(sub_data[, c("ZM1", "ZM2", "ZM3")], sum)
  # 转换为tibble并筛选最高工时的班次
  res <- tibble(
    班次名称 = names(shift_total),
    总工时 = as.numeric(shift_total)
  )
  res[res$总工时 == max(res$总工时), ]
})

结果说明

打印stat_result即可看到两个时段的统计结果,示例输出如下:

$dzień
# A tibble: 1 × 2
  班次名称 总工时
  <chr>     <dbl>
1 ZM3        2945

$noc
# A tibble: 1 × 2
  班次名称 总工时
  <chr>     <dbl>
1 ZM2        1772

如果需要输出中文时段命名,可提前将pora字段的dzień替换为白班、noc替换为夜班即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:21:03