如何打开多个表,将它们合并到内存中,并找出小计的结果?例如,“ c:\ 1 \”路径中有五个数据文件,它们看起来像“ Big Class.jmp”结构。
如何在没有“连接”的情况下按内存的5个文件按“年龄”列对“高度”列的数据进行分类和汇总。
就像在以下代码中实现的那样实现效果:
dir = "c:\1\";
Fs = Files In Directory( dir );
For( d = 1, d <= 5, d++,
d1 = Open( dir || fs[d] );
If( d == 1,
d2 = d1,
d2 << Concatenate( Data Table( d1 ), Append to first table );
Close( d1, nosave );
);
);
d1 = d2<< Summary(
Group( :age ),
Sum( :height ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 )
);
脚本编写回复:如何打开多个表,将它们合并到内存中,并找出小计的结果?这是代码的内存版本。它不会创建任何视觉对象,也不会占用视觉组件的任何内存,并且会创建2个内存项,1个列表和1个带结果的矩阵。
names default to here(1);
dt = open("$SAMPLE_DATA/big class.jmp",private);
dt << set name("zippy");
dt2 = open("$SAMPLE_DATA/big class.jmp",private);
dt3 = dt2<< Concatenate( dt,private );
close(dt,nosave);
close(dt2,nosave);
summarize( dt3, bygroup = by(:age), heightSum = sum(:height));
close(dt3,nosave);
show(bygroup,heightSum);回复:如何打开多个表,将它们合并到内存中,并找出小计的结果?谢谢吉姆!
如果有100个此类文件,请将文件名设置为“ 001.JMP-100.JMP”。
根据文件名的顺序一次对60个文件进行拼接,排序和汇总,然后输出结果,因此有41个结果。
第一个连接是根据上述方法从001.Jmp-060.JMP文件中获得第一个结果。
对于“ 002.Jmp-061.JMP”文件的第二次处理,这次如何更快地进行合并和汇总?
回复:如何打开多个表,将它们合并到内存中,并找出小计的结果?- 连接前60个
- 确保指定了“创建源列”选项
- 产生统计资料
- 读入并将新文件连接到1-60表
- 使用“源列”从数据表1中选择所有行
- 产生统计资料
- 重复步骤3-5,直到读取并分析了所有100个文件