如何在組合列()中為定界符提供參數?以下不起作用
Names Default To Here (1);
// Combine columns
dm = ".0";
Data Table( "myTable" ) << Combine Columns(
columns( :Col1, :Col2 ),
Column Name( "ID" ),
Delimiter(dm)
//Delimiter ("dm")
);但是直接將參數寫入 Delimiter 為
Delimiter(".0")作品。如何從外部為定界符提供參數?
自動化和腳本回复:如何在組合列()中為定界符提供參數?發生這種情況是因為 JMP 不評估消息中參數的參數。
您可以使用 Substitute 來替換 dm 的值。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// Combine columns
dm = ":";
Eval(
Substitute(
Expr(
dt << Combine Columns(
columns( :name, :age ),
Column Name( "ID" ),
Delimiter( d )
)
),
Expr( d ), dm
)
);回复:如何在組合列()中為定界符提供參數?@Jeff_Perkinson謝謝。 在這種情況下,如何編寫腳本,如果我對分隔符有條件 - 例如 delimiter = ".0" if : age <13 and delimiter = ".1", 否則。
回复:如何在組合列()中為定界符提供參數?這Combine Columns 消息與列 > 實用工具 > 合併列.
合併列不支持任何條件化。
相反,我會創建一個帶有公式的新列根據需要連接其他列。
這是公式在公式編輯器中的樣子。

這是創建它的 JSL。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// Combine columns
dm1 = ":";
dm2 = "-";
Eval(
Substitute(
Expr(
dt << New Column( "ID",
Character,
"Nominal",
Formula( :name || If( :age <= 13, d1, d2 ) || Char( :age ) ),
)
),
Expr( d1 ), dm1,
Expr( d2 ), dm2
)
);