将连续生产参数与四班三运转班次对应起来的算法
将连续生产参数与四班三运转班次对应起来的算法
背景介绍:
我们采用5分钟为采样周期,记录生产过程参数,数据记录是连续的,但生产工人是四班三运转轮流工作的。要想按生产稳定性指标对三班人员进行绩效考评,就必须将数据记录按三班进行分组。
四班三运转运行规律
1、 三班运行顺序:1、穷尽法。2、规律算法。
2、 一轮班次为6*4个班次,即8天一个轮回。
3、 建立一个用来循环的数组。(甲乙丙、甲乙丙、丁甲乙、丁甲乙、丙丁甲、丙丁甲、乙丙丁、乙丙丁)或者(123、123、412、412、341、341、234、234)
4、 将分组标签替换为三班名。建一个表格完成转换上牌时标签数,下排用班次来对应。
5、 找到每个班次对应的标签数。
6、 完成替换。
四班三运转分组算法
1、 时间分为月、日、时、分。
2、 以八小时为单位分组。8*60/5=96,ID/96取整。
3、 为每组设立一个标签数顺排。
4、 每个组的标签数在除以24取余数。
5、 将余数与数组(123、123、412、412、341、341、234、234)或数组(123、412、412、341、341、234、234、123)对应起来,比如:1,4,8,11,15,18用1来替换,等等。
6、 将甲乙丙丁与1234对应起来。
7、 完成替换。
实践
坑:负值在导入之前需在三EXCEL中选择列------设置单元格格式------数值-----在下边的负数形式选择框内选择正常的负数表现形式。
坑: historian输出的列名前面带一个点,这个在后面处理的时候后有语法错误,需要在EXCEL中修改过来。
坑:数据导入时,导入选项里的NA可选项也要选择NA,不可选择默认,否则会有太多无效值。
另外变量名要在fix里面一个个看一遍才能用中文显现出来。
a1$shift<-c(1:nrow(a1))
a1$shift<-a1$shift%/%96
a1$shift<-a1$shift%%24
a1$shift<-(a1$shift+13)%%24——起始时间对应是13
删除停机时间的数据。
library(sqldf)
a2<-a1
a2<-sqldf("select * from a2 where speed>1")
坑:historian输出的列名前面带一个点,这个在后面处理的时候后有语法错误,可以用fix语句对其进行删除。
按班次分组:与预计不同的是计算起始数都用0比较合适,修改对应数字(1:24)为(0:23)。如上例第五条就改为:将余数与数组(甲乙丙、甲乙丙、丁甲乙、丁甲乙、丙丁甲、丙丁甲、乙丙丁、乙丙丁)对应起来,比如:0,3,7,10,14,17用甲来替换,等等。
jia<-sqldf("select
* from a2 where shift in (0,3,7,10,14,17)")
yi<-sqldf("select
* from a2 where shift in (1,4,8,11,18,21)")
bing<-sqldf("select
* from a2 where shift in (2,5,12,15,19,22)")
ding<-sqldf("select * from a2 where shift in
(6,9,13,16,20,23)")
完成三班数据分组。
导出分析,到项目所在文件夹
library(xlsx)
write.xlsx(jia, "甲班.xlsx")
write.xlsx(yi, "乙班.xlsx")
write.xlsx(bing, "丙班.xlsx")
write.xlsx(ding, "丁班.xlsx")
图像输出
>
par(mfrow=c(2,2))
> boxplot(jia$`1#主抽瞬时功率`, main="甲班", ylab="瞬时电耗", ylim=c(3000, 5000))
>
> boxplot(yi$`1#主抽瞬时功率`, main="乙班", ylab="瞬时电耗", ylim=c(3000, 5000))
>
> boxplot(bing$`1#主抽瞬时功率`, main="丙班", ylab="瞬时电耗", ylim=c(3000, 5000))
>
> boxplot(ding$`1#主抽瞬时功率`, main="丁班", ylab="瞬时电耗", ylim=c(3000, 5000))
描述性数据,生成自定义函数
mystats<-function(x){
m<-mean(x)
s<-sd(x)
return(c(mean=m,stdev=s))
}
重命名使用中文名
names(jia)<-c("时间","速度","上料量","1S-1","1S-2","CP-1","PD-1","频率3","频率4","功率3","功率4","南负压","北负压","南烟道温度","北烟道温度","南终点温度","北终点温度","相对成品率")
坑:英文名太长无法分列,但只在最后输出前改为中文名。
统计数据
sapply(jia[c(2,8:18)],mystats)
sapply(yi[c(2,8:18)],mystats)
sapply(bing[c(2,8:18)],mystats)
sapply(ding[c(2,8:18)],mystats)
统计结果输出到excel表的话是单列的,要变成分列的数据框。
选择包含数据的列,在菜单栏里选择“数据”,在“数据工具”里,选择“分列”,然后按提示框,一步步完成分列。
如何对变量进行分组替换
使用merge对两个表进行合并。
1、将shift数据对应表导入。
还是使用importdata
坑:数据导入时,文件名必须是英文字母打头,否者显示多字符1错误。
2、将无用的行列删除,一次性删除一行、一列。
SHIFT<-SHIFT[-25,-3]
3、将两个表进行左连接
a3<-a2
a3<-merge(a3,SHIFT,all.x = TRUE )
4、删除异常值
a3<-a3[a3$speed<2 & a3$speed>1,]
a3<-a3[a3$`yield rate`<1.3 &
a3$`yield rate`>0,]
5、显示3号主抽的功率的箱形图
ggplot(a3, aes(x=sh, y=a3$`power 3`)) +
+ geom_boxplot(fill="cornflowerblue",
+ color="black")
6、将几幅图组合起来
p1<-ggplot(data=a3, aes(y=a3$`pressure
south pipe`,total,x=sh)) +
geom_boxplot(fill="cornflowerblue")
p2<-ggplot(data=a3, aes(y=a3$`pressure
north pipe`,total,x=sh)) +
geom_boxplot(fill="cornflowerblue")
p3<-ggplot(data=a3, aes(y=a3$`temperature
south pipe`,total,x=sh)) +
geom_boxplot(fill="cornflowerblue")
p4<-ggplot(data=a3,
aes(y=a3$`temperature north pipe`,total,x=sh)) +
geom_boxplot(fill="cornflowerblue")
p5<-ggplot(data=a3,
aes(y=a3$`temperature south destination`,total,x=sh)) +
geom_boxplot(fill="cornflowerblue")
p6<-ggplot(data=a3,
aes(y=a3$`temperature north destination`,total,x=sh)) +
geom_boxplot(fill="cornflowerblue")
p7<-ggplot(data=a3, aes(y=a3$`power
3`,total,x=sh)) +
geom_boxplot(fill="cornflowerblue")
p8<-ggplot(data=a3, aes(y=a3$`yield
rate`,total,x=sh)) +
geom_boxplot(fill="cornflowerblue")
library(gridExtra)
grid.arrange(p1,p2,p3,p4,p5,p6,p7,p8,
ncol=4,nrow=2)
输出如下图形:
将连续生产参数与四班三运转班次对应起来的算法相关推荐
- 挣值法的三个参数及四个指标总结
挣值法是用以分析目标实施与目标期望之间差异的一种方法.挣值法又称为赢得值法或偏差分析法.挣值法通过测量和计算已完成工作的预算费用与已完成工作的实际费用,将其与计划工作的预算费用相比较得到的项目的费用偏 ...
- mysql建立学号与课程编号的索引_数据库mysql 四约束 三范式 六索引
mysql 四约束 三范式 六索引 1.MySQL 约束 1.约束的作用 分类 表列的primary key主键,unique唯一键,not null非空等修饰符常常被称作约束(constraint) ...
- 中海达ihand30手簿使用说明_如何使用RTK手簿求坐标转换参数(四参数/七参数)...
参数计算是用于两个坐标系统之间的转换关系,GPS 接收机输出的数据是CGCS2000经纬度坐标,但是有些时候根据甲方的要求,需要转化到施工测量坐标,这个时候就需要软件进行坐标转换参数的计算和设置,而转 ...
- php解析url并得到url中的参数及获取url参数的四种方式
本文给大家介绍php解析url并得到url中的参数及获取url参数的四种方式,涉及到将字符串参数变为数组,将参数变为字符串的相关知识,本文代码简单易懂,感兴趣的朋友一起看看吧 下面一段代码是php解析 ...
- 回忆四班的那些事儿~
10 " 大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂. " 今天,谈谈四班的那些事儿吧~ 对于四班,回忆满满,根本忘却不了.和别的班一样,一个班内总有那么几个调皮捣蛋的孩子 ...
- 加油四班!加油佟穆!我们的征途是星辰大海!!!
大家好,我是雄雄,欢迎关注微信公众号[雄雄的小课堂] 首先,感谢佟老师与范老师,在我不在的时候,三班的就业和四班的学习都落在了两位老师的肩头,其次,还需要特别感谢冯老师,能抽时间为四班讲课,辛苦三位老 ...
- 定义一个没有参数的函数、输出python3次_Python函数参数详解,三天让你掌握python,不再是小白
原标题:Python函数参数详解,三天让你掌握python,不再是小白 引言 随着程序功能的增多,代码量随之增大,此时仍不加区分地把所有功能的实现代码放到一起,将会使得程序的组织结构不清晰,可读性变差 ...
- 南方h5手簿求转换参数_如何使用RTK手簿求坐标转换参数(四参数/七参数)
参数计算是用于两个坐标系统之间的转换关系,GPS 接收机输出的数据是CGCS2000经纬度坐标,但是有些时候根据甲方的要求,需要转化到施工测量坐标,这个时候就需要软件进行坐标转换参数的计算和设置,而转 ...
- Redis(四)------三种特殊数据类型
Redis(四)------三种特殊数据类型 7.三种特殊数据类型 7.1 Geospatial(地理位置) 使用经纬度定位地理坐标,并用一个有序集合Zset保存,所以,Zset的命令也可以使用 有效 ...
最新文章
- 亮道智能发布自动驾驶环境感知系统测试验证服务|2019 上海车展...
- #ifdef,#else,#if,#endif (转载)
- 排序算法之——插入排序
- mongodb 监听不到端口_干货|MongoDB简单操作和通过python进行操作
- 我最爱用的一款 Redis 可视化管理工具!好用到爆!!!
- mysql 主从特性_mysql 5.6 新特性 主从推延
- 浏览器控件JxBrowser V6.14大版本发布 | 注入CSS
- java计算机毕业设计大数据在线考试系统在线阅卷系统及大数据统计分析(附源码、数据库)
- 2018年北京市POI数据各类型POI
- 计算机科学与技术有没有博士,哪些高校有计算机科学与技术一级学科博士点?...
- QQ登录之后自动弹出“QQ网吧”怎么屏蔽?
- 关于技术人员的非技术能力
- python 球的表面积和体积_[给球的体积算表面积]C语言求球的表面积和体积
- Github建立个人导航网站
- Python爬虫之淘宝数据爬取(商品名称,价格,图片,销量)
- Microsoft Excel 教程「3」:如何在 Excel 中打印工作表?
- ARM到底是冯诺依曼结构还是哈佛结构
- CSS3 animation-fill-mode详解
- 【ZJOJ 5454】【NOIP2017提高A组冲刺11.5】仔细的检查
- 一文读懂自动驾驶运行设计域ODD
热门文章
- php增加横排文字的间距,html段落内文字设置字间距间隔
- Gitbook详解(七)-Markdown编辑器推荐
- linux系统桌面环境选择,你应该选择Cinnamon作为Linux桌面环境的十个理由
- Windows系列系统 修改键盘默认对应键值(修改ctrl与fn位置, 解决键盘重要键损坏问题)
- 关于Java对接读卡器遇到的坑Process finished with exit code -1073740940 (0xC0000374)
- PERL-5.26.1安装教程(LINUX系统)
- 一个屌丝程序猿的人生(八)
- 中文分词_数据分析之中文分词
- LSB隐写(最低有效位隐写)
- MySQL 用户管理 - 添加用户、授权、删除用户