连接表并关闭输入文件我正在寻找一种方法来关闭打开并已用于输入的表
For( f2 = 1, f2 < N 项( 表格 ), f2++,
ConcTable = 表[f2] << /*###*/Concatenate(
表[f2 + 1],
输出表名称(“两者”)
) /*###*/;
关闭(文件列表[f2],不保存);
);
日志中的答案是:
Send 在访问或评估 'Send' 时需要可编写脚本的对象,Tables[f2] << /*###*/Concatenate( Tables[f2 + 1], Output Table Name( "Both" ) ) /*###* /
回复:连接表并关闭输入文件
@rc_hertzy写道:
很好的解决方案。 首先,一个拼写错误(等号不是减号):第四行应该是
dt=数据表(1);
现在,我如何为源保留一栏? 如果我只是添加
创建源列
在 Concatenate 语句中,我得到连续的源列,但没有一个是我想要的 - 列出所有源文件。
相关:当我手动连接文件并将源脚本从输出文件复制到脚本窗口时,它不会运行,出现找不到列出的文件名的错误。 这是脚本( File1.jmp 是选定的打开文件):
dt = 当前数据表();
dt <<连接(
数据表( “文件2.jmp” ),
数据表( “文件3.jmp” ),
输出表( “组合测试.jmp” ),
创建源列
);
谢谢。 -瑞克
我在最后一部分发现了我的错误。 我已经重命名了一个数据文件,因此脚本当然无法找到它。
我仍然想要一种修改您的解决方案以添加源列的方法,这样我就不需要显式列出所有打开的文件。 谢谢。
回复:连接表并关闭输入文件很好的解决方案。 首先,一个拼写错误(等号不是减号):第四行应该是
dt=数据表(1);
现在,我如何为源保留一栏? 如果我只是添加
创建源列
在 Concatenate 语句中,我得到连续的源列,但没有一个是我想要的 - 列出所有源文件。
相关:当我手动连接文件并将源脚本从输出文件复制到脚本窗口时,它不会运行,出现找不到列出的文件名的错误。 这是脚本( File1.jmp 是选定的打开文件):
dt = 当前数据表();
dt <<连接(
数据表( “文件2.jmp” ),
数据表( “文件3.jmp” ),
输出表( “组合测试.jmp” ),
创建源列
);
谢谢。 -瑞克
回复:连接表并关闭输入文件这是连接表格并关闭不需要的表格的简单方法
Names Default To Here( 1 );
Final_Table="Data_" || char(ntable);
// Concatenate the tables and delete them. Add all of the tables to the first table
dt-data table(1);
For( i = 2, i <= N Table(), i++,
dt << concatenate(data table(i), append to first table(1));
close(data table(i), nosave);
);
// Rename the table to the desired name
dt << set name(Final_Table);
回复:连接表并关闭输入文件吉姆,
如果您查看附加的两个表,它们具有相同的列数和列名称。 两者唯一的区别是行数。 第 1 列是时间戳,根据此重复项将被删除。
按照脚本编写的方法有效。 我正在寻找一种有效的方法来保存决赛桌并关闭已作为决赛输入的表格。
此致,
基督教
回复:连接表并关闭输入文件您能否提供数据表的示例,以及什么被视为重复行的说明?
回复:连接表并关闭输入文件吉姆,谢谢你的回答。 让我进一步扩展一下。 目标是连接数据表列表并删除双行。 任何对最终串联表有贡献的数据表都将被关闭。 输入数据表的数量是可变的。 待拼接数据表的选择遵循起始字符串相等且拼接数据表最终名称相同的规则。
现在是连接和双行删除以及保存最终表的代码。
如果(N 项(文件列表)>0,
对于 (nu_t = 1, nu_t <= num_tables, nu_t++,
FinalTable = Munger(文件列表[1],6,4);
Final_Table = "Data_"||FinalTable||".jmp";
//显示(最终表);
对于 (f2 = 1, f2 < nitems(表), f2++,
ConcTable = Tables[f2] << Concatenate(Tables[f2+1], 输出表名称( "Both" ) );
关闭(表[f2],不保存);
);
// 删除 Doube 行
ConcTable = 当前数据表();
col_min = Parse( "Col Min( Row(), :Name(\!"" || Concat Items( ConcTable << 获取列名( string ), "\!"), :Name(\!"" ) || “\!”))“);
重复项 = [];
对于每一行( If( col_min != Row(), 重复项 |/= Row() ) );
ConcTable << 删除行(重复项);
ConcTable << 保存(Path_datatable_out ||Final_Table);
//For(cc=1,cc <= nitems(Tables),cc++, Close(Tables[cc], 不保存));
);
); // 如果条件
我期待您的回复。
基督教
回复:连接表并关闭输入文件这是一段可以工作的代码,并且遵循您指定的逻辑。 但是,我不明白你为什么要这样做......所以也许结果不会是你想象的。 如果没有,请回复最终结果。
Names Default To Here( 1 );
// Create sample tables
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt << subset( selected rows( 0 ), selected columns( 0 ), by( :age ) );
Close( dt, nosave );
// Create your Tables list
Tables = {};
For( i = 1, i <= N Table(), i++,
Insert Into( Tables, Data Table( i ) << get name )
);
// Run the concatinations
For( f2 = 1, f2 < N Items( Tables ), f2++,
ConcTable = Data Table( Tables[f2] ) << Concatenate( Data Table( Tables[f2 + 1] ), Output Table Name( "Both" ) );
Close( Data Table( Tables[f2] ), No Save );
);