创建新列并根据原始列单元格插入公式你好,
我是一个没有经验的JMP脚本,我正在尝试编写我的第一个大(呃)脚本。 我遇到一部分问题。这是我正在尝试做的事情:我有各种数据表,我将使用此脚本。我希望脚本能够查看所有列,不包括第一列(每个数据表的列号和行号都不同),并为表中已存在的每列创建一个新列。我希望每个新列的名称与每个原始列相同,但最后使用“_code”,并且最好位于表中原始列的旁边。在每个新列中,我希望公式为if / then语句。如果“A列”在单元格中有文本“<”,则为0,否则为1。
我希望我的解释是有道理的。 我发布了我的脚本,虽然它似乎在第8行打破,我不知道为什么。
感谢您的任何帮助!
莱西
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 2, i <= nitems( col_list ), i++,
data_col = ":" || col_list[i];
code_col = col_list[i] || "_Code";
str = evalinsert (
"\[dt << New Colum ("^code_col^", Numeric, Continuous,
Format("Best",12),
Formula(If( Contains( "^code_col^", "<" ),
0,
1
)));
);]\");
eval(parse(str));
);Re:根据原始列单元格创建新列并插入公式是的,我得到了这个工作。非常感谢!
Re:根据原始列单元格创建新列并插入公式:Name()函数旨在处理此问题。 以下是我对您的脚本所做的修改,我相信这将解决问题。 我没有测试过这个修改,但我认为它会起作用。 如果没有,你应该能够看到我正在尝试做什么,你应该能够让它发挥作用。
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 13, i <= N Items( col_list ), i++,
Eval(
Substitute(
Expr(
Column(col_list[i]) << Data Type( Character );
dt << Add Multiple Columns( __NewColName__, 1, after( __OrigCol__ ), Numeric );
Column( __NewColName__ ) << set formula( If( Contains( __OrigCol__, "<" ), 1, 0 ) );
),
Expr( __NewColName__ ), col_list[i] || "_Code" ,
Expr( __OrigCol__ ), Parse( ":Name(\!"" || col_list[i] || "\!:)" )
)
)
);Re:根据原始列单元格创建新列并插入公式吉姆,嗨,
我去尝试新数据表上的脚本,我遇到了列名的问题。 我处理环境数据,很多时候分析物名称(即列名称)将在名称中包含符号,例如“ - ”,“[”,“]”,“(”,“)”和/或“ “。当我运行脚本时,它在第一列“3-Methyl-1-butene”上出错了。 有没有解决这个问题?
谢谢,
莱西
Re:根据原始列单元格创建新列并插入公式这很棒!谢谢!
我错了,我在数据表中留下了“第13列”。那只是我确定我的if语句是否正常工作,当我在网上发布时我忘了删除它。所以我刚从我的数据表中删除了它,在你发送的精彩脚本中将13改为2,然后它就像一个魅力。
非常感谢!
莱西
Re:根据原始列单元格创建新列并插入公式以下是对我们认为满足您所有需求的代码的修改。 我必须处理的一个项目是,您开始使用的列(2-13)必须是字符,因此公式不会出错。 第13列会使脚本出错,因为它是一个无法更改为字符的公式列,因为只要它运行它的公式,它就会强制列为数字。
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 13, i <= N Items( col_list ), i++,
Eval(
Substitute(
Expr(
Column(col_list[i]) << Data Type( Character );
dt << Add Multiple Columns( __NewColName__, 1, after( __OrigCol__ ), Numeric );
Column( __NewColName__ ) << set formula( If( Contains( __OrigCol__, "<" ), 1, 0 ) );
),
Expr( __NewColName__ ), col_list[i] || "_Code",
Expr( __OrigCol__ ), Parse( ":" || col_list[i] )
)
)
);