如何将新列添加到所有数据表我进行了一系列实验,这些实验产生了一个以样本名称为标题的结果文本文件。
我有一个脚本,它采用数据表标题并用标题填充一个新的“样本名称”列。
dt = current data table();
name = dt << get name;
new column("Sample Name");
column(dt,"Sample Name")[1]=name;<BR />
nr = N Rows( dt );
For( ii = 2, ii <= nr, ii++,
If( is missing(Column( dt, "Sample Name" )[ii]),
Column(dt, "Sample Name" )[ii] = Column( dt, "Sample Name" )[ii - 1]
);
);这些实验一次进行数十次,甚至数百次。 是否可以对我的脚本进行修改以使其在所有打开的数据表上运行,以便我可以连接所有结果并继续自动化分析?
脚本回复:如何向所有数据表添加新列感谢您的答复。
运行此脚本时出现错误

回复:如何向所有数据表添加新列您很可能使用的是旧版本的 JMP(JMP16 中引入了 For Each)。 简单的解决方法是用 For 循环替换它(还修复了代码上的一个错字):
Names Default To Here(1);
Open("$SAMPLE_DATA/Big Class.jmp"); // open for demo purposes
Open("$SAMPLE_DATA/Big Class Families.jmp"); // open extra table for demo purposes
new_col_name = "Sample Name";
dt_list = Get Data Table List();
For(i = 1, i <= N Items(dt_list), i++,
dt_cur = dt_list[i];
name = dt_cur << get name;
If(!Contains(dt_cur << Get Column Names("String"), new_col_name),
dt_cur << New Column(new_col_name, Character, Nominal, << Set Each Value(name));
);
);
回复:如何向所有数据表添加新列您是否要向每个名为“Sample Name”的表添加新列,并且它将仅包含该特定数据表的名称?
Names Default To Here(1);
Open("$SAMPLE_DATA/Big Class.jmp"); // open for demo purposes
Open("$SAMPLE_DATA/Big Class Families.jmp"); // open extra table for demo purposes
new_col_name = "Sample Name";
For Each({dt_cur}, Get Data Table List(),
name = dt_cur << get name;
If(!Contains(dt_cur << Get Column Names("String"), new_col_name),
dt_cur << New Column(new_col_name, Character, Nominal, << Set Each Value(name));
);
);

回复:如何向所有数据表添加新列如果您只需要每个表名用于连接,为什么不让连接来完成这项工作,它有一个用于此目的的选项? 请参阅脚本索引或帮助。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Trial1.jmp" );
dt2 = Open( "$SAMPLE_DATA/Trial2.jmp" );
dt << Concatenate(
Output Table( "Result Table with Source" ),
Data Table( "Trial2" ),
Create Source Column
);