我正在開始編寫腳本來查找許多列的兩個測量值之間的增量。
當列名有破折號時,我很難製作列公式....
用於刪除引號的解析命令將破折號更改為減號操作數,然後與我要完成的操作混淆。
錯誤日誌:
意外的“_92MHz_test_data”。 也許缺少“;”或者 ”,”。
這是腳本(如果列的名稱中沒有操作數,則該腳本有效。
例如,
dt = 當前數據表();
Col_Name = "差異"; // 列 (5) - 列 (300)
Col_Name1_char = char(列名(5)); // "DWK112079-01_92MHz_test_data 的 bin""
Col_Name2_char = char(列名(300));// "DWK112079-01_90MHz_test_data 的 bin""
Col1_Name = (concat(":",(Col_Name1_char))); //":DWK112079-01_92MHz_test_data的bin";
Col2_Name = ((concat(":",Col_Name2_char))); // ":DWK112079-01_90MHz_test_data 的bin";
Formula_I = ((concat(col1_Name, " - ", Col2_Name))); //製作公式表達式
a = Expr(新列(X,公式(Z))); // 名為 Diff 的新列
b = 替代(名稱 expr(a),Expr(X),Col_Name,Expr(Z),解析(Formula_I)); // 當 Colnames 名稱中有“-”時,這會出錯
評估(b);
//筆記:
顯示(公式_I,解析(公式_I));
//注:Formula_I = ":DWK112079-01_92MHz_test_data 的bin - :DWK112079-01_new_updated_test_data 的bin";
//注意 Parse(formula_I) = :bin of DWK112079 - 1;這不是我想要的
JMP 將列名中間的“-”解釋為減法。因此,您需要向 JMP 表明整個術語是一個列名。最簡單的方法是使用命名結構
":列名"n
以下是對您的腳本進行的修改,並進行了更改
names default to here(1);
dt = Current Data Table();
Col_Name = "diff"; // column(5) - Column(300)
Col_Name1_char = Char( Column Name( 5 ) ); // "bin of DWK112079-01_92MHz_test_data""
Col_Name2_char = Char( Column Name( 300 ) );// "bin of DWK112079-01_90MHz_test_data""
Col1_Name = (Concat( ":\!"", (Col_Name1_char), "\!"n" )); //":bin of DWK112079-01_92MHz_test_data";
Col2_Name = ((Concat( ":\!"", Col_Name2_char , "\!"n" ))); // ":bin of DWK112079-01_90MHz_test_data";
Formula_I = ((Concat( col1_Name, " - ", Col2_Name ))); //Make the formula expression
a = Expr(
New Column( X, formula( Z ) )
); // New column with name Diff
b = Substitute( Name Expr( a ), Expr( X ), Col_Name, Expr( Z ), Parse( Formula_I ) ); // This has error when Colnames has "-" in the name
Eval( b );
//Note:
Show( Forumula_I, Parse( Formula_I ) );
//Note : Formula_I = ":bin of DWK112079-01_92MHz_test_data - :bin of DWK112079-01_new_updated_test_data";
//Note Parse(formula_I) = :bin of DWK112079 - 1; This is not what I want