<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 ),
Chart Col( :Inlet Temp, XBar, R )
)
);
組 2 = Expr(
控製圖(
圖表 Col(:混合時間,單獨測量),
Chart Col(:混合速度,單獨測量)
)
);
win = New Window("控製圖示例",
H 列錶框(
"垂直列錶框",
面板框(“第一組控製圖”,group1),
面板框(“第二組控製圖”,group2)
)
);