Re:如何在不添加辅助列的情况下直接获得比较结果?谢谢吉姆!
因此,我要考虑的第一种方法是,当您连续存在大量数据时,可以使用内存来更快地完成。Re:如何在不添加辅助列的情况下直接获得比较结果?而且我会再次问你,我尝试了第一种方法,但没有结果。我不知道哪里弄错了,谢谢!Re:如何在不添加辅助列的情况下直接获得比较结果?第一个代码操作的结果
谢谢!

Re:如何在不添加辅助列的情况下直接获得比较结果?当你说“你的意思时,我有点困惑” 直接获得,无需添加辅助柱 “;我已经整理了两个简单的脚本。 第一个严格遵守您的陈述,因为它不会产生不必要的列来产生结果。 但是,这种方法效率低下,如果数据表变大,则不能很好地扩展
Names Default To Here( 1 );
d1 = Open( "$SAMPLE_DATA/Trial1.jmp" );
d2 = Open( "$SAMPLE_DATA/Trial2.jmp" );
// Create the new column by comparing values between the data tables
d2 << New Column( "Result",
formula(
compare = d1:yield[((d1 <<
get rows where(
d1:popcorn == d2:popcorn & d1:oil amt == d2:oil amt &
d1:batch == d2:batch ))[Row()])];
If( compare > d2:yield[Row()],
theResult = 1,
theResult = 0
);
theResult;
)
);
// Change the values of the column Result to static values by removing
// the formula
d2:Result << delete property( "formula" );
第二个示例非常有效,但使用临时附加列,但结果最终相同:
Names Default To Here( 1 );
d1 = Open( "$SAMPLE_DATA/Trial1.jmp" );
d2 = Open( "$SAMPLE_DATA/Trial2.jmp" );
// Temp. change of the name of the Yield column in data table 1
d1:yield << set name("yield1");
// Copy the Yield1 column to data table 2
d2 << Update(
With( d1 ),
Match Columns( :popcorn = :popcorn, :oil amt = :oil amt, :batch = :batch ),
Add Columns from Update table( :yield1 )
);
// Change the Yield1 column in data table 1 back to it's original name
d1:yield1 << set name("yield");
// Create and calculate the Result column in data table 2
d2 << new column("Result", formula(
If(:yield1 > :yield, 1,0);
));
// Change the values of the column Result to static values by removing
// the formula
d2:Result << delete property( "formula" );
// Delete the no longer needed Yield1 column
d2<<DELETE columns=""></DELETE>
如何在不添加辅助列的情况下直接获得比较结果?大家好!
相同规格的两个表的产量是不同的,
可以直接获得比较结果而无需添加辅助列:
结果见表2:如果表1中的产量大于表2中的产量,则结果为1;否则,结果为0。
d1 = Open( "$SAMPLE_DATA/Trial1.jmp" );
d2 = Open( "$SAMPLE_DATA/Trial2.jmp" );
谢谢!
Re:如何在不添加辅助列的情况下直接获得比较结果?JMP日志中有哪些消息?
此外,第一种方法的代码的最后一行有一个错过副本
“ 第二”
被复制了。 确保它不在您的代码中。
Re:如何在不添加辅助列的情况下直接获得比较结果?无效下标(必须是数字或数字列表){1}访问或评估'(d1 <<获取行所在(d1:爆米花== d2:爆米花&d1:油amt == d2:油amt&d1: batch == d2:batch))[Row()]',(d1 << get rows where(
d1:爆米花== d2:爆米花&d1:油amt == d2:油amt&d1:批次== d2:批次
))[/*###*/行()]
谢谢吉姆!

Re:如何在不添加辅助列的情况下直接获得比较结果?这似乎是个错误
Re:如何在不添加辅助列的情况下直接获得比较结果?我不知道该说些什么。我已经在JMP Pro下运行我的代码一直回到JMP 11,并且无法让它失败。我在Window 10上运行
您可能需要将此信息提交给JMP支持部门,以便能够进一步调查差异。Re:如何在不添加辅助列的情况下直接获得比较结果?我知道了。谢谢吉姆!Re:如何在不添加辅助列的情况下直接获得比较结果?这是另一种方法。这个使用矩阵。它在矩阵和数据表之间做了一些假设,但如果你感兴趣的话,希望能给你足够的开始。
Names Default To Here( 1 );
sourceTable = Data Table( "Trial1" );
resultsTable = Data Table( "Trial2" );
convertToMatrix = Function( {dt},
{Default Local},
mtrx = dt << get all columns as matrix;
numberOfColumns = N Col( mtrx );
For( i = 1, i <= numberOfColumns - 1, i++,
mtrx[0, i] *= 10 ^ (i - 1);
If( i > 1,
mtrx[0, i] = mtrx[0, i] + mtrx[0, i - 1]
);
);
mtrx[0, 1 :: numberOfColumns - 2] = [];
mtrx;
);
sourceMatrix = convertToMatrix( sourceTable );
resultsMatrix = convertToMatrix( resultsTable );
numberOfResults = N Row( resultsMatrix );
results = J( numberOfResults, 1, 0 );
For( i = 1, i <= numberOfResults, i++,
key = sourceMatrix[i, 1];
value = sourceMatrix[i, 2];
index = Loc( resultsMatrix == key ) + 1;
results[Floor( index / 2 )] = resultsMatrix[index] < value;
);
resultsTable << New Column( "Result", numeric, "continuous", values( results ) );Re:如何在不添加辅助列的情况下直接获得比较结果?我将尝试学习如何做这个内存阵列。非常感谢你!