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:如何在不添加輔助列的情況下直接獲得比較結果?我將嘗試學習如何做這個內存陣列。非常感謝你!