條件滿足後如何執行JSL命令尊敬的 JMP 社區用戶,
我是 JMP 的新人,我一直面臨一個問題。 希望我能得到你們的幫助。
我有一個數據表。 我想僅針對某些特定值的列運行圖形生成器。
例如,我想選擇屬於“monitor_set_name”和“measurement_set_name”列的AB766和RSDF單元格;以及對應於“AB766”和“RSDF”的其他列和行

然後,我想為包含我需要的信息的表運行“圖形生成器”。
如果“monitor_set_name”和“measurement_set_name”不包含“AB766”和“RSDF”,我將跳過運行“graph builder”
你能給我一些建議嗎?
真摯地,
大規模定制Re: 滿足條件後如何執行JSL命令親愛的布雷迪先生,
感謝您的支持。 我稍後會在我的腳本中應用您的建議。
真摯地,
Re: 滿足條件後如何執行JSL命令讓我嘗試一下非常感謝。
順便說一句,我找到了論壇中建議的一種方法,它對我有用
CHECK_U2_CT_HDF = Contains(
df << get column names( string ),
"centerline@u2_holdforceduration_2"
);
If( CHECK_U2_CT_HDF == 0,
df << New Column( "centerline@u2_holdforceduration_2",
Numeric,
Continuous,
Format( "Best", 10 )
)
);
感謝您的大力支持!
Re: 滿足條件後如何執行JSL命令Try() 函數是處理此問題的一種方法。
U1_UCL_HDF =Try( Column( dt, "up_control_lmt@u1_holdforceduration_2" )[1],.);
if(isMissing(:U1_UCL_HDF),
add and populate the new column
);
如果列和行存在,U1_UCL_HDF 將具有有效值,但如果嘗試失敗,它將返回缺失值。因此流程可能類似於
Re: 滿足條件後如何執行JSL命令親愛的特克斯尼爾森,
當 JMP 找不到引用列時,它將停止運行 --> 你是對的
我想澄清我的問題。 事情是我嘗試從我公司的系統中獲取數據。 由於產品類別不同,數據表會有所不同。
例如:
產品A:包含欄: up_control_lmt@u1_holdforceduration_2和up_control_lmt@u2_holdforceduration_2
產品B:僅包含列: up_control_lmt@u1_holdforceduration_2
因為我想構建一個可以應用於這兩種產品的腳本。
在您的建議中,如果產品 B 的數據表不包含列,我需要為產品 B 添加一列: up_control_lmt@u2_holdforceduration_2。
因此,我可以使用函數來檢查產品 B 的數據表是否包含: up_control_lmt@u2_holdforceduration_2。 --> 如果數據表確實包含: up_control_lmt@u2_holdforceduration_2。 , 我將向數據表添加新列。
希望您能理解我的問題?
真摯地,
Re: 滿足條件後如何執行JSL命令我很困惑。您表明您想要從指定的列(單元格 1)讀取值,但您沒有這樣的列。
當 JMP 找不到引用的列時,它將停止運行。因此,一旦發現錯誤,就不會繼續處理。
如果您沒有這樣的列但想要擁有它,則需要將該列添加到數據表中,並使用您希望其具有的值填充單元格 1。這就是解決方案......但我認為我並沒有真正理解這個問題。
Re: 滿足條件後如何執行JSL命令親愛的特克斯尼爾森,
有用。 謝謝你的建議。 我將參考腳本指南進行學習。
同時,我還有更多問題。
我想從列的單元格中提取值,然後將值分配給變量,因為我想使用變量進行繪圖。
但是,如果我的表不包含列: lo_control_lmt@u2_holdforceduration_2或者 : up_control_lmt@u2_holdforceduration_2 ,我的腳本沒有顯示任何圖表
如果我刪除下面腳本中的 2 行,我的腳本將顯示圖表
U2_UCL_HDF = 列(dt,"up_control_lmt@u2_holdforceduration_2")[1];
U2_LCL_HDF = 列(dt,"lo_control_lmt@u2_holdforceduration_2")[1];
對於這種情況有什麼解決方案嗎? 真摯地。
我的腳本:
U1_UCL_HDF = Column( dt, "up_control_lmt@u1_holdforceduration_2" )[1]; //extract value from cell
U1_LCL_HDF = Column( dt, "lo_control_lmt@u1_holdforceduration_2" )[1]; //extract value from cell
U2_UCL_HDF = Column( dt, "up_control_lmt@u2_holdforceduration_2" )[1]; //extract value from cell
U2_LCL_HDF = Column( dt, "lo_control_lmt@u2_holdforceduration_2" )[1]; // extract value from cell
NW = New Window( "KPP summarize",
Variability Chart(
Y( :HOLDFORCEDURATION_2 ),
X( :COMPLEVEL_1, :LINK_ID, :TEST_OR_BOND_HEAD_ID, :LOT, :BONDSTAGE, :CARRIER_X ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Connect Cell Means( 1 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
AIAG Labels( 0 ),
SendToReport(
Dispatch(
{"Variability Chart for HOLDFORCEDURATION_2"},
"2",
ScaleBox,
{Min( 332 ), Max( 641 ), Inc( 50 ), Minor Ticks( 1 ),
Add Ref Line( 0, "Dotted", "Medium Light Gray", "", 1 ),
Add Ref Line( U1_UCL_HDF, "Solid", "Red", "UCL_U1", 2 ),
Add Ref Line( U1_LCL_HDF, "Solid", "Red", "LCL_U1", 2 ), // put the value in here extract
Add Ref Line( U1_CT_HDF, "DashDot", "Red", "CL_U1", 2 ), // put the value in here extract
Add Ref Line( U2_UCL_HDF, "Solid", "BlueCyan", "UCL_U2", 2 ), // put the value in here extract
Add Ref Line( U2_LCL_HDF, "Solid", "BlueCyan", "LCL_U2", 2 ), // put the value in here extract
Add Ref Line( U2_CT_HDF, "DashDot", "BlueCyan", "CL_U2", 2 )} // put the value in here extract
)
)
)
);Re: 滿足條件後如何執行JSL命令您的變量“df”指向子集數據表。當您從數據表創建報表時,它不會成為數據表的一部分。它本身就是一個實體。因此,訪問創建的報告的最簡單方法是指定一個變量來指向它。我已經在您的腳本的以下修改中完成了此操作。
gb = df << Graph Builder(
變量“gb”指向圖形生成器對象。稍後在代碼中,“保存圖片”消息將應用於圖形生成器平台生成的報告
report(gb) << save picture( "C:\Users\lamquocb\image.jpg" );
這是修改後的腳本
names default to here( 1 );
dt = Open( "raw_data.csv", "invisible" );
dt << Select Where(
:monitor_set_name == "CSP_FAST_TC" & :spc_chart_subset == "STDDEV" & :measurement_set_name == "U1_X"
);
df = dt << Subset( Selected Rows( 1 ), Selected columns only( 0 ), "invisible" );
gb = df << Graph Builder(
Size( 1056, 675 ),
Show Control Panel( 0 ),
Automatic Recalc( 0 ),
Variables(
X( :spc_txn_date ),
Y( :chart_value ),
Y( :lo_control_lmt, Position( 1 ) ),
Y( :up_control_lmt, Position( 1 ) ),
Y( :centerline, Position( 1 ) ),
Group Y( :monitor_set_name ),
Group Y( :measurement_set_name ),
Group Y( :spc_chart_subset ),
Wrap( :spc_entity )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Legend( 25 ), Connection( "Curve" ), Smoothness( 0.5 ) )
),
SendToReport(
Dispatch( {}, "spc_txn_date", ScaleBox, {Label Row( Automatic Font Size( 0 ) )} ),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
25,
Properties( 2, {Line Color( 19 )} ),
Properties( 3, {Line Color( 0 ), Line Style( "Dotted" )} )
)}
)
)
);
report(gb) << save picture( "C:\Users\lamquocb\image.jpg" );
我強烈建議您花時間閱讀 JMP 文檔庫中的腳本指南,該指南位於“幫助”下拉菜單下!
Re: 滿足條件後如何執行JSL命令親愛的特克斯尼爾森,
有用。 非常欣賞。
我嘗試遵循您的指導並為自己應用
dt = Open( "raw_data.csv", "invisible" );
dt << Select Where(
:monitor_set_name == "CSP_FAST_TC" & :spc_chart_subset == "STDDEV" & :measurement_set_name == "U1_X"
);
df = dt << Subset( Selected Rows( 1 ), Selected columns only( 0 ), "invisible" );
df << Graph Builder(
Size( 1056, 675 ),
Show Control Panel( 0 ),
Automatic Recalc( 0 ),
Variables(
X( :spc_txn_date ),
Y( :chart_value ),
Y( :lo_control_lmt, Position( 1 ) ),
Y( :up_control_lmt, Position( 1 ) ),
Y( :centerline, Position( 1 ) ),
Group Y( :monitor_set_name ),
Group Y( :measurement_set_name ),
Group Y( :spc_chart_subset ),
Wrap( :spc_entity )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Legend( 25 ), Connection( "Curve" ), Smoothness( 0.5 ) )
),
SendToReport(
Dispatch( {}, "spc_txn_date", ScaleBox, {Label Row( Automatic Font Size( 0 ) )} ),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
25,
Properties( 2, {Line Color( 19 )} ),
Properties( 3, {Line Color( 0 ), Line Style( "Dotted" )} )
)}
)
)
);
df << save picture( "C:\Users\lamquocb\image.jpg" );
但是,我遇到了另一個問題,即無法保存 df 的圖片圖形生成器。
我嘗試訪問我想要存儲圖片的位置,但找不到。
你有什麼建議嗎?
真摯地,
Re: 滿足條件後如何執行JSL命令你好,
如果您是 JMP 新手,請務必查看本地數據過濾器和列切換器。 本地數據過濾器可能會在這裡幫助您...... 我在示例中包含了一個列切換器,只是為了讓您知道它可以做什麼。
只需單擊菜單項即可將圖表限制為您想要考慮的數據。 不需要編碼,而且很容易使用......任何人都可以使用它們。
要獲取本地數據過濾器,請從圖形生成器的紅色小三角菜單中選擇添加本地數據過濾器。
要獲取列切換器,請從主菜單中選擇重做 > 列切換器。 您還必須選擇要換出的列以及要在其中輪換的列。 請務必在此組中包含要換出的列。 所有列必須具有相同的數據類型。
運行下面的腳本來了解這些的實際情況。
乾杯,
布雷迪

Names Default To Here(1);
dt = open ("$Sample_Data\Car Physical Data.jmp");
Graph Builder(
Size( 526, 448 ),
Show Control Panel( 0 ),
Variables( X( :Country ), Y( :Gas Tank Size ) ),
Elements( Box Plot( X, Y, Legend( 8 ) ), Points( X, Y, Legend( 9 ) ) ),
Local Data Filter(
Show Histograms and Bars( 0 ),
Add Filter(
columns( :Type ),
Where( :Type == "Compact" ),
Display( :Type, N Items( 5 ) )
)
),
Column Switcher(
:Gas Tank Size,
{:Weight, :Turning Circle, :Displacement, :Horsepower, :Gas Tank Size}
)
);
Re: 滿足條件後如何執行JSL命令為了生成下面的 JSL,我只需以交互方式運行這些步驟,然後從日誌中獲取代碼並將其粘貼到腳本窗口中。
names default to here(1);
// Open Data Table: big class.jmp
// → Data Table( "big class" )
Open( "$SAMPLE_DATA/big class.jmp" );
// Select matching cells
Data Table( "big class" ) << Select Where( :age == 12 & :sex == "F" );
// Subset data table
// → Data Table( "Subset of big class" )
Data Table( "big class" ) << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
// Report snapshot: Subset of big class - Graph Builder
Data Table( "Subset of big class" ) << Graph Builder(
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
);
// Invert current selection
Data Table( "big class" ) << Invert Row Selection;
// Subset data table
// → Data Table( "Subset of big class 2" )
Data Table( "big class" ) << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
// Report snapshot: Subset of big class 2 - Graph Builder
Data Table( "Subset of big class 2" ) <<
Graph Builder(
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);