如何完成内存阵列中循环表的串联,然后一次生成数据表?我使用“ Big Class.jmp”来解释操作要求:
我正在按照代码完成操作,但是速度很慢。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "test", formula( :weight - :height ) );
dt << run formulas;
Wait( 0 );
For( i = 1, i <= N Row( dt ), i++,
d1 = New Table( "a",
Add Rows( dt[i, 6] + 1 ),
New Column( "name", Character, Nominal ),
New Column( "step", Continuous ),
New Column( "level", Continuous )
);
d1[1 :: N Row( d1 ), 1] = dt[i, 1];
Column( "step" ) << Formula( dt[i, 4] + (Row() - 1) );
d1 << run formulas;
Column( "step" ) << deleteFormula;
Column( "level" ) << Formula( If( Row() == dt[i, 6] + 1, 10, Ceiling( (Row()) / ((dt[i, 6] + 1) / 9.9) ) ) );
d1 << run formulas;
Column( "level" ) << deleteFormula;
If( i == 1,
d2 = Current Data Table(),
Current Data Table( dt );
d2 << Concatenate( Data Table( d1 ), Append to first table );
d1 << Close Window;
);
);
1。创建一个新列“ test”以计算“ weight”-“ height”
2。根据以下要求生成新表,并将它们拼接到第一个生成的新表中:
每个新表单都有三列:“名称”,“步骤”和“级别”。新表中的行数是在第一步中获得的每个名称的“测试”值
“ step”列是从“ height”开始的数据,向下每行增加1,直至“ weight”行
“级别”列:将这些行从小到大平均分为10个段。每段的行数可能会有所不同。
3。将桌子一个接一个地拼接到桌子上。

如何完成内存阵列中循环表的串联,然后一次生成数据表?
谢谢专家!
回复:如何完成内存阵列中循环表的串联,然后一次生成数据表?我在下面的修改无需将代码修改为仅使用内存变量和矩阵的步骤,而是利用了数据表的“私有”选项。 它允许创建一个不可显示的数据表。因此,消除了创建显示它们所需的对象的所有开销。 我的代码将处理时间至少减少了一半。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "test", formula( :weight - :height ) );
dt << run formulas;
Wait( 0 );
For( i = 1, i <= N Row( dt ), i++,
d1 = New Table( "a",
private,
Add Rows( dt[i, 6] + 1 ),
New Column( "name", Character, Nominal ),
New Column( "step", Continuous ),
New Column( "level", Continuous )
);
d1[1 :: N Row( d1 ), 1] = dt[i, 1];
Column( "step" ) << Formula( dt[i, 4] + (Row() - 1) );
d1 << run formulas;
Column( "step" ) << deleteFormula;
Column( "level" ) << Formula(
If( Row() == dt[i, 6] + 1,
10,
Ceiling( (Row()) / ((dt[i, 6] + 1) / 9.9) )
)
);
d1 << run formulas;
Column( "level" ) << deleteFormula;
If( i == 1,
d2 = d1,
Current Data Table( dt );
d2 << Concatenate( Data Table( d1 ), Append to first table );
Close(d1, nosave);
);
);
dtFinal = d2 << subset( selected rows( 0 ), selected columns( 0 ) );<BR />Close(d2,nosave);
在“脚本指南”中查找有关“专用”选项的信息
回复:如何完成内存阵列中循环表的串联,然后一次生成数据表?私人的,
谢谢吉姆!