如何使用 JSL 快速比较两组范围列以获得每列的最小值?标题有点难理解。
以这个大班为例:
1. 首先,按年龄总结“身高”和“体重”的平均值。
2. 然后按年龄总结“身高”和“体重”的中位数。
3. 然后比较“身高”的平均值和中位数并取它们的最小值。
最后,比较“体重”的平均值和中位数并取它们的最小值。

我将使用以下代码并最终循环获取最小值。
有没有什么好的代码可以最小化这种比较?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
d1 = dt << Summary(
Group( :age ),
Mean( :height ),
Mean( :weight ),
Median( :height ),
Median( :weight ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
statistics column name format( "column" )
);
c = N Col( d1 ) / 2 - 1;
For( i = 1, i <= c, i++,
ca = Column( i + 2 ) << Get Name || "0";
d1 << New Column( ca, formula( Min( As Column( 2 + i ), As Column( 2 + c + i ) ) ) );
d1 << run formulas;
Column( ca ) << deleteFormula;
);
谢谢!
脚本Re: 如何使用 JSL 快速比较两组范围列以获得每列的最小值?谢谢吉姆!
Re: 如何使用 JSL 快速比较两组范围列以获得每列的最小值?这是一个可能的更快的解决方案
Names Default To Here( 1 );
dtOrig = open("$SAMPLE_DATA/semiconductor capability.jmp");
colNames = dtOrig << get column names(continuous);
dt = dtOrig << Summary(
Group( :SITE ),
mean(colnames),median(colnames),
link to original data table(0)
);
half = N Col( dt ) / 2 - 1;
For( i = 3, i <= half, i++,
mat = dt[0, i];
mat = mat || dt[0, i + half];
v = Transpose( V Min( Transpose( mat ) ) );
dt << New Column( "Min" || Substr( Column( dt, i ) << get name, Contains( Column( dt, i ) << get name, "(" ) ),
set values( v )
);
);Re: 如何使用 JSL 快速比较两组范围列以获得每列的最小值?而且效率低下:
最小值(作为列(2 + i),作为列(2 + c + i)))Re: 如何使用 JSL 快速比较两组范围列以获得每列的最小值?当需要汇总以进行比较的列数和行数很大时,这种循环方法很慢。
矩阵法更快吗?或者还有其他好方法。
谢谢专家!