将列、列名和表名复制到新表<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我在将多个数据表中的列复制到新的空白表时遇到了一些麻烦。 要打开的数据表都有相同的列名。
到目前为止,我可以打开多个表,但只能从打开的最新数据表中复制列。
下面是我的代码:
名字默认到这里( 1个) ;
// 使用 'PickFile()' 获取要打开的文件列表(仅限 Windows)
文件列表=选择文件(
“选择多个文件之一” , // 迅速的
“$桌面” , //初始文件夹
{ “JMP 文件|jmp;jsl;jrn;csv” , “所有文件|*” } , // 要应用的文件过滤器列表(被 OS/X 忽略)
1个, // 要应用的初始文件过滤器(上面列表中项目的索引)
0 , // 保存标志 - 指定“保存”或“打开”窗口。 分别设置值 1 或 0。
空的() , // 默认文件
多种的// Multiple - 允许打开多个文件(被 OS/X 忽略)
) ;
// 如果只选中单个文件,fileList不会是一个列表,所以需要我们自己构建
如果( !是列表(文件列表) ,
文件列表=评估表( {文件列表} )
) ;
// 打开文件并存储它们对应的 JMP 表名
表名= {} ;
为了( F = 1个, F <= N 项(文件列表) , F ++,
dt =打开(文件列表[ F ] ) ;
插入(表名, dt <<获取名称) ;
) ;
//创建Column Copier来复制文件
col_dlg =新窗户( “列复印机” ,
面板箱( “选择四列以创建一个新表:” ,
col_clist =列表框(全部,宽度( 200 ) ,最大选择( 4个)) ,
) ,
按钮盒( “好的” ,
selected_column_list = col_clist <<被选中;
col1 = selected_column_list [ 1个] ;
列2 = selected_column_list [ 2个] ;
列3 = selected_column_list [ 3个] ;
列4 = selected_column_list [ 4个] ;
// 仅使用两个选定的列创建一个新表
dt2 = dt <<子集(列(柱子( dt , col1 ) ,柱子( dt ,列2 ) ,柱子( dt ,列3 ) ,柱子( dt ,列4 ) ) ) ;
col_dlg <<关闭窗口;
)
) ;
注:新建的数据表是多个数据表最新打开的数据表的子集有能力的。 我希望能够从任何数据表中选择任何复制任何列到新的。 谢谢。
回复:将列、列名和表名复制到新表非常感谢,这工作。 我认为这是问题所在,只是最后的帮助。 串联是垂直的。 我正在尝试水平连接数据表。 所以我使用了“Join”而不是“concatenate”,但它打开了 2 个单独的数据表而不是将它们组合在一起。
回复:将列、列名和表名复制到新表错误....这是我的错误....在行中
插入(表名,dt << getName);
该行应为:
插入(表名,dttemp << getName);
回复:将列、列名和表名复制到新表我检查了数据表,但仍然只打开一个。 这是我从下面的日志中得到的错误:
名称未解析:dt 正在访问或评估“dt”,dt/*###*/
在以下脚本中,错误标记为 /*###*/
名称默认为此处(1);
fileList = 选择文件(
"选择多个文件之一",
"$桌面",
{"JMP 文件|jmp;jsl;jrn;csv", "所有文件|*"},
1、
0,
空的(),
多种的
);
如果(!是列表(文件列表),
fileList = 评估列表({fileList})
);
表名 = {};
对于( f = 1, f <= N 项( fileList ), f++,
dttemp = 打开(文件列表);
Insert Into( tableNames, dt/*###*/ <
如果(f == 1,
dt = dttemp,
dt << concatenate( dttemp, append to first table( 1 ) );
关闭(dttemp,nosave);
);
);
col_dlg = New Window( "分栏复印机",
Panel Box( "选择四列来创建一个新表:",
col_clist = Col List Box( all, width( 200 ), max selected( 4 ) )
),
按钮框("确定",
selected_column_list = col_clist << getselected;
col1 = selected_column_list[1];
col2 = selected_column_list[2];
col3 = selected_column_list[3];
col4 = selected_column_list[4];
dt2 = dt << 子集(
列(
列(dt,col1),
列(dt,col2),
列(dt,col3),
列(dt,col4)
)
);
col_dlg << 关闭窗口;
)
回复:将列、列名和表名复制到新表我修改了代码,读取 4 个文件中的每一个,并将它们附加到第一个文件。因此,最终结果应该是您只有一个文件,但每个文件的所有数据都在其中。
我无法完全测试您的代码,因此可能存在一些小问题。我更改的唯一代码是在 For 循环中。请再次运行代码,然后查看日志View==>Log,看看错误是什么。此外,检查数据表,并验证所有数据都已进入数据表。
回复:将列、列名和表名复制到新表你好吉姆,
感谢您的帮助,但它仍然不起作用。 这次我运行新代码时,列复印机没有出现,我想打开的文件中只有一个出现了。
回复:将列、列名和表名复制到新表下面的代码读取每个文件,然后将它们连接成一个数据表,然后由您的 Column Copier 处理
名字默认到这里( 1个) ;
// 使用 'PickFile()' 获取要打开的文件列表(仅限 Windows)
文件列表=选择文件(
“选择多个文件之一” , // 迅速的
“$桌面” , //初始文件夹
{ “JMP 文件|jmp;jsl;jrn;csv” , “所有文件|*” } , // 要应用的文件过滤器列表(被 OS/X 忽略)
1个, // 要应用的初始文件过滤器(上面列表中项目的索引)
0 , // 保存标志 - 指定“保存”或“打开”窗口。 分别设置值 1 或 0。
空的() , // 默认文件
多种的// Multiple - 允许打开多个文件(被 OS/X 忽略)
) ;
// 如果只选中单个文件,fileList不会是一个列表,所以需要我们自己构建
如果( !是列表(文件列表) ,
文件列表=评估表({文件列表})
) ;
// 打开文件并存储它们对应的 JMP 表名
表名= {} ;
为了( F = 1个, F <= N 项(文件列表) , F ++,
dtemp =打开( 文件列表);
插入( 表名, dt <<获取名称) ;
// 将数据表附加到一起
如果( F == 1个,
dt = dtemp ,
dt <<连接( dtemp ,附加到第一个表( 1个) ) ;
关闭( dtemp ,没有保存) ;
) ;
) ;
//创建Column Copier来复制文件
col_dlg =新窗户( “列复印机” ,
面板盒( “选择四列以创建一个新表:” , col_clist =列列表框( 全部,宽度( 200 ) ,最大选择( 4个) ) , ) ,
按钮盒( “好的” ,
selected_column_list = col_clist <<被选中;
col1 = selected_column_list[ 1个] ;
列2 = selected_column_list[ 2个] ;
列3 = selected_column_list[ 3个] ;
列4 = selected_column_list[ 4个] ;
// 仅使用两个选定的列创建一个新表
dt2 = dt <<子集( 列(柱子( dt , col1 ) ,柱子( dt ,列 2) ,柱子( dt ,栏3) ,柱子( dt , col4 ) ) ) ;
col_dlg <<关闭窗口;
)
) ;