<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
目前我工作的地方有 SAS 9.2 Foundation 和 QC 包,我们有 4 个模板或宏程序,它们将与我们的每个产品一起运行。我们有 40 多种产品。问题是,我们是公司中唯一将 SAS 用于我们的报告的分支机构,并且一直希望在 JMP 中使用它们。我们目前拥有的典型 SAS marco 是
%macro Import(Filepath=) excel 文件,通常是一个工作簿中的两个工作表。一个用于数据,一个用于规格限制
%macro USLtest(test=)
%macro LSLtest(test=)
%macro BothSLtest(test=)
ods rtf startpage=现在列= 1 ;
数据结果数据;
设置结果数据;
表值= 1 ;
格式表值8. ;
跑;
/* 时间线 */
数据阶段(keep=lot_count _Lot_ _PHASE_);
长度_PHASE_ $ 7 ;
设置结果数据;
如果 mfg_date <= &startdate 那么 _PHASE_= '事先的' ;
else if mfg_date >= &startdate then _PHASE_= '当前的' ;
跑;
数据限制(重命名=(下划线=_VAR_));
设置限制数据;
哪里翻译(条(_VAR_), '____' , '()/' )= “&测试” ;
下划线=翻译(条带(_VAR_), '____' , '()/' );
删除_VAR_;
跑;
数据 vref (keep=newvar _REF_ _REFLAB_ _CVREF_ rename=(newvar=_VAR_));
设定限制;
其中 _VAR_= “&测试” ;
newvar=strip(_VAR_);
做我= 1至2 ;
如果我= 1然后做;
_REF_=_LSL_;
_REFLAB_= 'LSL' ;
_CVREF_= '红色的' ;
输出;
结尾;
如果我= 2然后做;
_REF_=_USL_;
_REFLAB_= 'USL' ;
_CVREF_= '红色的' ;
输出;
结尾;
结尾;
删除_VAR_;
跑;
/* 运行图表 */
proc shewhart 数据=结果数据;
irchart &test*lot_count= '*' /nochart nochart2 vref=vref /*outtable=data1*/历史=数据1;
跑;
数据数据2;
合并数据1阶段;
按批次计数;
_VAR_=条带( “&测试” );
跑;
数据图表;
合并 data2 限制;
通过_VAR_;
调用符号( 'ls' ,strip(_LSL_));
调用符号( 'usl' ,strip(_USL_));
调用符号( '变量' ,strip(_VAR_));
调用符号( '单位' ,strip(单位));
跑;
/* 个人测量图表 */
proc shewhart历史=数据2;
irchart &test*lot_count= '*' / outlabel=(lot_count) /* 删除范围图 */ nochart2 vref=vref /* 基于子组数据的能力指数 */指数/* 规格限制 */ lsl=&lsl usl=&usl
/* 读取时间线 */读取阶段=全部/* 标识图表顶部的阶段 */相位图例 vreflabpos= 2 zerostd 测试= 1至4测试标签1= ''测试标签2= ''剪辑因子= 2总面板= 1 ;
插入 stddev cpklcl= 'Cpk 降低 95%' cpk= 'CPK' cpkucl= 'Cpk 95% 上限' ;
标签 &var= "&var (& 单位)" ;
跑;
/* 直方图 */
ods 选择直方图;
proc能力数据=图表noprint;
规格 lsl=&lsl usl=&usl;
var &var;
直方图 &var / normal;
插图 n= 'N'
pctlss= '% < LSL' pctgtr= '% > USL' cpklcl= 'Ppk 降低 95%' cpk= 'Ppk' cpkucl= 'Ppk 95% 上限' /
cfill = ywh
格式 = 6.2 ;
标签 &var= "&var (& 单位)" ;
跑;
数据结果数据;
设置结果数据;
表值= 3 ;
格式表值8. ;
跑;
ods rtf 列= 4 ;
proc 报告数据=resultsdata nowindows;
列lot_count _lot_ &test;
定义lot_count / '数数'显示样式(列)=[单元格宽度= .5在];
定义_lot_/显示;
定义 mfg_date / 显示;
定义&测试/显示;
跑;
%macro USLtestwithsubgroups(test=)
%macro LSLtestwithsubgroups(test=)
%macro BothSLtestwithsubgroups(test=)
等等。。
%macro Outputfilemacro(filepath=) 这个宏里面的概括顺序是(ODS graphics on, ods rtf startpage, call the test macros such as %BothSLtest(test='pH'), ods graphics off, rtf close)
我在 outputfilemacro 中调用了 8-20 个不同的测试宏,每个测试显示 2-4 个图表,具体取决于使用的测试宏。
在我的程序结束时,我只有一手要改变的东西。
%导入(文件路径=文件位置)
%Outputfilemacro(文件路径=文件位置,标题的产品信息等)
我在 outputfilemacro 中运行的宏示例是:
% 修正输出文件宏
带有 outfilepath 目标的 ods 图形选项
%两者SL图(开始日期= '01Apr2013'd , 测试 = pH)
%两者SL均值图表(开始日期= '01Apr2013'd , test=Extractable_Volume, firstvar=C1, lastvar=C5, samplesize= 5 , startlotcount= 42 )
% USL图表(开始日期= '01Apr2013'd , 测试=Water_Content)
%两者SL图(开始日期= '01Apr2013'd , 测试=测定__前列地尔_)
% USL图表(开始日期= '01Apr2013'd , 测试=PGA1)
% USL图表(开始日期= '01Apr2013'd , 测试=PGB1)
% USL图表(开始日期= '01Apr2013'd , 测试=keto_PGE1)
% USL图表(开始日期= '01Apr2013'd , 测试=iso_PGE1)
% USL图表(开始日期= '01Apr2013'd ,测试=总杂质)
%两者SL均值图表(开始日期= '01Apr2013'd , test=Content_Uniformity, firstvar=CU1, lastvar=CU10, samplesize= 10 , startlotcount= 42 )
% USL图表(开始日期= '01Apr2013'd , 测试=AV)
%两者SL图(开始日期= '01Apr2013'd , 测试=测定__NaCl_)
ods 闭幕词
% 修正输出文件宏
%输出文件宏 (文件路径= 2014 \ 2014 _产品名称\SAS\代码, 产品编号=代码, 产品名称=名称, 开始日期= '12Jun2013'd , 结束日期= '11Jun2014'd)
突出显示该宏,单击提交,其余的由 SAS 完成。
Test 是我的数据集中的变量名称,它正在根据规格限制进行测试和绘制图表。我有根据规格限制测试的能力估计控制图。
图表显示特定于每个测试、当前和先前时间阶段的规格限制,具体取决于我选择的日期,以及图表左上角的能力指数。每次我为不同的产品运行它时,我所做的就是更改文件路径名称,复制并粘贴我想要运行的测试宏,并在我希望拥有的每个 SLChart 宏中设置 test= 值。对于我拥有的每种产品和产品强度,我可以在大约 5-10 分钟内输出我需要的所有图表。这个特定的产品强度程序将生成 26 个左右的图表,并在图表之后打印出特定于测试的数据。
问题是,我可以在 JMP 10 中做类似的事情吗?如果是这样,宏在 JMP 中是如何工作的?
我对 JMP JSL 有一点了解,但对它是全新的。只是想弄清楚如何在 JMP 中使事情像在我们的 SAS 宏中一样自动化。
消息编辑者:Jeff Ollis
快活,
我不确定您的输出可能是什么样子,但是打开文件然后制作一些控制图的 JSL 相当简单。使用 JMP 打开您的 excel 文件,JMP 表格的表格框中将有一个“源”脚本,您可以使用它再次打开表格。 然后使用 JMP 制作控制图,格式化它们以匹配您的标准,然后将脚本保存到数据表中。
然后要自动打开表格并运行控制图,只需将源脚本中的 Open 语句和控制图脚本合并到一个新的脚本窗口中(用分号分隔两个指令)。 你有它,一个自动报告,你几乎没有编码。
下面是两个简单的例子:
//示例1
dt = Open("$SAMPLE_DATA/Tablet Production.jmp");
dt << 控制图(
图表 Col(:混合时间,单独测量),
Chart Col(:混合速度,单独测量),
图表 Col(:力,单独测量),
图表 Col(:Mill Time, Individual Measurement ),
图表 Col(:涂层粘度,单独测量),
Chart Col( :Inlet Temp, 单独测量 )
);
//示例2,稍微复杂一些
组 1 = Expr(
控制图(
样品标签(:涂料供应商),
Chart Col( :Coating Viscosity, XBar, R ),
图表 Col( :Inlet Temp, XBar, R )
)
);
组 2 = Expr(
控制图(
图表 Col(:混合时间,单独测量),
Chart Col(:混合速度,单独测量)
)
);
win = New Window("控制图示例",
H 列表框(
"垂直列表框",
面板框(“第一组控制图”,group1),
面板框(“第二组控制图”,group2)
)
);