使用列存儲值設置列的規格限制大家好,
我將 csv 文件導入 JMP 以分別獲取數據表(指定為 dt0)和規格表(指定為 dt1)。 我想知道在規格表 (dt0) 中獲取規格並在數據表 (dt0) 中設置列的規格限制。
我發現無法成功設置規格的問題:

這是我的代碼:
名字默認到這裡( 1個);
文件 =選擇文件(
“選擇 CSV 文件” ,
“$下載” ,
{ “JMP 文件|jmp;jsl;jrn” , “所有文件|*” },
1個,
0 ,
“”
);
dt0 =打開(
文件,
導入設置(
行尾(CRLF,CR,LF),
字段結束(逗號,CSV( 0 ) ),
帶引號( 1個),
使用撇號作為引號( 0 ),
使用區域設置( 0 ),
掃描整個文件( 1個),
將空列視為數字( 0 ),
壓縮數字列( 0 ),
壓縮字符列( 0 ),
壓縮允許列表檢查( 0 ),
標籤( 1個),
列名開始( 2個),
數據開始( 8個),
要讀取的行( “全部” ),
年份規則( “20xx” )
)
);
dt1 =打開(
文件,
導入設置(
行尾(CRLF,CR,LF),
字段結束(逗號,CSV( 0 ) ),
帶引號( 1個),
使用撇號作為引號( 0 ),
使用區域設置( 0 ),
掃描整個文件( 1個),
將空列視為數字( 0 ),
壓縮數字列( 0 ),
壓縮字符列( 0 ),
壓縮允許列表檢查( 0 ),
標籤( 1個),
列名開始( 2個),
數據開始( 5個),
要讀取的行( 2個),
年份規則( “20xx” )
)
);
為了(我= 13 , 我<= N列(dt0), 我++,
柱子(dt0,i)<<數據類型(數字);
柱子(dt0,i)<<造型類型( “連續的” );
);
為了(我= 13 , 我<= N列(dt1), i++,
柱子(dt1,i)<<數據類型(數字);
柱子(dt1,i)<<造型類型( “連續的” );
);
為了(我= 13 , 我<= N列(dt1), i++,
溫度USL=列儲值(dt1,我, 1個); //將dt1規格表中的規格分配給'tempUSL'和'tempLSL'
tempLSL=列儲值(dt1,我, 2個);
評價(
評估表達式(
柱子( dt0,i ) <<設置屬性(
“規格限制” ,
{LSL(表達式( tempLSL ) ), USL(表達式( tempUSL ) ), 顯示限制( 1個)}
)
)
);
);
有什麼建議可以解決這個問題嗎? 謝謝
回复:使用列存儲值設置列的規格限制很好的建議,真的很有幫助。 非常感謝你,拜倫!
回复:使用列存儲值設置列的規格限制我看到你在做什麼,我不得不說你的代碼看起來非常好。 也很複雜。
通過 JMP 中已有的腳本平台,還有其他幾種方法可以完成同樣的事情。
這裡有幾個例子:
這個使用過程篩選平台
Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA/Cities.jmp" );
dt2 = Open( "$SAMPLE_DATA/CitySpecLimits.jmp" );
dt1 << Process Screening(
Y( :OZONE, :CO, :SO2, :NO ),
Use Limits Table(
1,
dt2,
Process Variables( :Column 1 ),
LSL( :_LSL ),
USL( :_USL ),
Target( :_Target ),
Go
)
);
這個使用過程能力平台
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
obj = dt << Process Capability(
Process Variables( :OZONE, :CO, :SO2, :NO ),
Spec Limits(
Import Spec Limits(
"$SAMPLE_DATA/CitySpecLimits.jmp"
)
)
);
在此示例中,將打開一個對話框以允許用戶選擇規格限製表
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
obj = dt << Manage Spec Limits(
Y( dt << Get Column Group( "Processes" ) )
);
這種利用平台特性的基礎代碼也更容易維護。
希望這有用,
乾杯,
乙
回复:使用列存儲值設置列的規格限制大家好,
我通過使用這些代碼找到了解決方案:
Eval(
Eval Expr(
tempUSL=Col Stored Value(dt1, Expr(i), 1)
)
);
Eval(
Eval Expr(
tempLSL=Col Stored Value(dt1, Expr(i), 2)
)
);
謝謝
回复:使用列存儲值設置列的規格限制如果直接給'tempUSL'和'tempLSL'分配一個數字,它就可以工作。
但我需要從規格表中分配規格限制。
Names Default To Here( 1 );
Files = Pick File(
"Select CSV File",
"$Downloads",
{"JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
""
);
dt0 = Open(
Files,
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 2 ),
Data Starts( 8 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
dt1 = Open(
Files,
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 2 ),
Data Starts( 5 ),
Lines To Read( 2 ),
Year Rule( "20xx" )
)
);
For(i=13, i<=N Cols(dt0), i++,
Column(dt0,i)<<DATA type=""></DATA>