脚本连接列你好
我已经编写了一个脚本,用于连接“PIN_NAME”列中的列
我的问题是我没有固定数量的列。
我应该连接从 Test_name 10 到 Test_name 15 的列,但有时我只有 Test_name 10 到 Test_name 13(例如)
我收到一个错误,因为脚本试图连接不存在的 Test_Name 14 和 Test_Name 15。
你能帮我解决这个问题吗?

列(dt_split,“PIN_NAME”)<<公式(Char(:TEST_NAME 10 ||“”||
:TEST_NAME 11 || “” ||
:TEST_NAME 12 || “” ||
:TEST_NAME 13 || “”||
:TEST_NAME 14 || “”||
:TEST_NAME 15)
);
脚本视窗回复:脚本连接列这要求感兴趣的列是字符列,您有 JMP16 并且这些列通过正则表达式“Column \d{2}”
大概的概念
- 获取列名列表
- 使用一些过滤器构建您感兴趣的列名列表(我使用的是正则表达式)
- 使用 2 中的列表构建公式的表达式。
- 使用 Eval(EvalExpr()) 将其添加到带有公式的新列
Names Default To Here(1);
dt = New Table("Untitled 2",
Add Rows(0),
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Set Values({"a"})),
New Column("Column 2", Character, "Nominal", Set Values({"b"})),
New Column("Column 10", Character, "Nominal", Set Values({"c"})),
New Column("Column 11", Character, "Nominal", Set Values({"d"})),
New Column("Column 12", Character, "Nominal", Set Values({"e"}))
);
col_names = dt << Get Column Names(Character, "String");
list_expr = Expr(List());
For Each({col_name}, col_names,
If(!IsMissing(Regex(col_name, "Column \d{2}")),
Insert Into(list_expr, Name Expr(AsColumn(Column(dt, col_name))));
);
);
// show(Name Expr(list_expr));
Eval(EvalExpr(
dt << New Column("PINNAME", Character, Nominal,
Formula(Concat Items(Expr(list_expr), " "))
);
));回复:脚本连接列如果您有 Jmp17,事情就会变得容易得多。
然后,您可以从新公式列中调用一个函数 - 不受字符类型的列的限制:)
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Character" ), "Concatenate with Space" ),
Columns( :name, :age, :sex, :height, :weight )
);
甚至更好的是:您甚至可以使用在右键单击新公式列菜单中禁用的变体。
新的公式列菜单 - 不要禁用变体
比如数字条目的连接和字符列条目的计数:
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Character" ), "Concatenate with Space" ),
Columns( :height, :weight )
);
);
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Aggregate" ), "Count" ),
Columns( :name ),
Group By( :sex )
);
在右键单击新公式列菜单中禁用-ARGH !!!!