Comment peut-on obtenir directement le résultat de la comparaison sans ajouter de colonnes auxiliaires?Merci Jim!
Donc, la première façon dont je vais y penser est que lorsque vous avez beaucoup de données en ligne, vous pouvez utiliser la mémoire pour le faire plus rapidement.Comment peut-on obtenir directement le résultat de la comparaison sans ajouter de colonnes auxiliaires?Et je vais vous demander encore une fois, j'ai essayé la première méthode, et il n'y a aucun résultat. Je ne sais pas où j'ai fait une erreur, merci!Comment peut-on obtenir directement le résultat de la comparaison sans ajouter de colonnes auxiliaires?Le résultat de la première opération de code
Je vous remercie!

Comment peut-on obtenir directement le résultat de la comparaison sans ajouter de colonnes auxiliaires?Je suis un peu confus par ce que vous voulez dire quand vous dites " obtenu directement sans ajout de colonnes auxiliaires "; J'ai mis en place 2 scripts simples. Le premier adhère strictement à votre déclaration, en ce sens qu'il ne crée aucune colonne inutile pour produire les résultats. Cependant, cette méthode est inefficace et ne sera pas très efficace si les tableaux de données deviennent volumineux.
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" );
Le deuxième exemple est très efficace, mais utilise des colonnes supplémentaires temporaires, mais les résultats sont les mêmes:
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>
Comment obtenir directement le résultat de la comparaison sans ajouter de colonnes auxiliaires?Bonjour à tous!
Le rendement des deux tables de même spécification est différent,
Le résultat de la comparaison peut-il être obtenu directement sans ajouter de colonnes auxiliaires:
Les résultats sont obtenus dans le tableau 2: si le rendement du tableau 1 est supérieur à celui du tableau 2, le résultat est 1; sinon, le résultat est 0.
d1 = Open( "$SAMPLE_DATA/Trial1.jmp" );
d2 = Open( "$SAMPLE_DATA/Trial2.jmp" );
Merci!
Comment peut-on obtenir directement le résultat de la comparaison sans ajouter de colonnes auxiliaires?Quels sont les messages dans le journal JMP?
En outre, il y avait une copie manquante sur la dernière ligne du code pour la première méthode
" La deuxième"
a été miss copié. Assurez-vous que ce n'est pas dans votre code.
Comment peut-on obtenir directement le résultat de la comparaison sans ajouter de colonnes auxiliaires?indice non valide (doit être un nombre ou une liste de nombres) {1} dans l'accès ou l'évaluation de '(d1 << obtenir des lignes où (d1: maïs soufflé == d2: maïs soufflé & d1: huile amt == d2: huile amt & d1: batch == d2: batch)) [Row ()] ', (d1 << récupère les lignes où (
d1: maïs soufflé == d2: maïs soufflé & d1: quantité d'huile == d2: quantité d'huile & d1: lot == d2: lot
))[/*###*/Rangée()]
Merci Jim!

Comment peut-on obtenir directement le résultat de la comparaison sans ajouter de colonnes auxiliaires?Cela semble être le mistak
Comment peut-on obtenir directement le résultat de la comparaison sans ajouter de colonnes auxiliaires?Je ne sais pas quoi dire. J’ai exécuté mon code sous JMP Pro jusqu’à JMP 11 et je ne peux pas le faire échouer. Je cours sur la fenêtre 10
Vous devrez peut-être adresser cette question à l’assistance JMP pour pouvoir étudier plus avant cette anomalie.Comment peut-on obtenir directement le résultat de la comparaison sans ajouter de colonnes auxiliaires?Je vois. Merci Jim!Comment peut-on obtenir directement le résultat de la comparaison sans ajouter de colonnes auxiliaires?Voici encore une autre approche. Celui-ci utilise des matrices. Il fait des suppositions entre les matrices et les tableaux de données, mais espérons que vous en aurez assez pour commencer si vous êtes intéressé.
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 ) );Comment peut-on obtenir directement le résultat de la comparaison sans ajouter de colonnes auxiliaires?Je vais essayer et apprendre à faire ce tableau de mémoire. Merci beaucoup!