Équivalent de recherche de la colonne unique VBonjour à tous,
J'ai donc utilisé une formule qui fonctionne de la même manière que vlookup dans Excel, mais j'ai maintenant découvert qu'elle ne fonctionne pas sur des tables de données plus volumineuses car elle ralentit et tue JMP.
Ci-joint un exemple de tableau de données dans lequel j'ai séparé les deux fonctions que j'avais combinées et qui fonctionnent comme prévu :

Article VLU

Résultat de l'ulcère veineux

Si je devais utiliser la formule de la colonne « Élément VLU » pour l'intégrer à la formule des résultats VLU, cela entraînerait une spirale infernale. Disposer de deux colonnes distinctes n'est pas rédhibitoire, mais il serait plus simple de le faire dans une seule formule.
Merci pour toutes les idées !!
Steve
Fusion et nettoyage des donnéesRe : Recherche équivalente de la colonne unique VAvec l'introduction de la nouvelle agrégation de colonnes, certains problèmes de vitesse ont été résolus dans JMP19 :
Nouveautés de Graph Builder pour JMP 19
celui-ci aussi : )
Re : Recherche équivalente de la colonne unique VUne autre façon d'effectuer une recherche virtuelle dans JMP est d'utiliser la plateforme de mise à jour. C'est une solution très efficace. Elle nécessite que les valeurs recherchées soient dans une table séparée, mais pour votre table de données, c'est une opération simple. Voici un script qui effectue votre recherche très rapidement.
Names Default To Here( 1 );
dt = Current Data Table();
// Select matching cells
dt << Select Where( :VALUE_STR == "" );
// Invert current selection
dt << Invert Row Selection;
// Subset data table
// → Data Table( "Subset of Vlookup example" )
dt << Select Where( :VALUE_STR == "" );
dt << Invert Row Selection;
dtSum = dt << Subset(
Selected Rows( 1 ),
columns( :HEADER_ID, :VALUE_STR ),
output table( "Lookup" )
);
// Change column name: VALUE_STR → VLU Result from UPdate
dtSum:VALUE_STR << Set Name( "VLU Result from UPdate" );
// Update data table
dt << Update(
With( Data Table( dtSum ) ),
Match Columns( :HEADER_ID = :HEADER_ID )
);
// Remove Lookup table
Close( dtSum, nosave );
Re : Recherche équivalente de la colonne unique V
@shampton82 a écrit :
Si je devais prendre la formule de la colonne « Élément VLU » et la mettre dans la formule Résultats VLU, cela provoquerait la spirale de la mort.
En fait, cela ressemble à une spirale mortelle, mais en y regardant de plus près, il s’agit en réalité d’une spirale de consommation extrême de café.
Et il vous montrera à quelle fréquence JMP recalcule les formules de colonnes !
Le problème est causé par le
Col Maximum(if (String comparison ))
Outre l'abandon de l'idée d'une formule de colonne, d'autres solutions de contournement pour JMP < 19 sont :
- DON'T use a string comparison, convert the string to a number:
:VALUE_STR[Col Maximum( If( :X__3 == 3.1, Row(), . ), :HEADER_ID )]
Conseils et astuces - meilleures pratiques avec JMP/JSL
- ... or use Contient()
:VALUE_STR[Col Maximum( If( contains(:X__3 , "V3_1"), Row(), . ), :HEADER_ID )]
- DON'T use max() to "distribute" a single value in groups
... colonne médiane() is much faster:
:VALUE_STR[Col Median( If( :X__3 == "V3_1", Row(), . ), :HEADER_ID )]
Re : Recherche équivalente de la colonne unique VMerci @txnelson !
Je voulais le garder comme une colonne de formules, mais je vais aussi le garder dans ma poche arrière.
Re : Recherche équivalente de la colonne unique VMerci @hogi !
Je préfère votre analogie. De plus, votre suggestion d'utiliser COLMEDIAN() a parfaitement fonctionné. C'est incroyable que les performances des deux fonctions soient si différentes. Raison de plus pour attendre avec impatience l'installation prochaine de la version 19.
Re : Recherche équivalente de la colonne unique VJ'ai également proposé une solution basée sur un tableau associatif
As Constant(
Summarize( bygp = by( :HEADER_ID, :VALUE_STR ) );
aa = Associative Array( bygp[1], bygp[2] );
);
Parse( Eval( Parse( "aa[\!"" || Char( :HEADER_ID[Row()] ) || "\!"]" ) ) );
Re : Recherche équivalente de la colonne unique VOuah!
- Résumer avec un groupe bidimensionnel *)
- ... introduit dans un tableau associatif pour supprimer les entrées manquantes :
Résumer trie les entrées, les entrées manquantes viennent en premier - et sont écrasées par la deuxième paire
- accélération en utilisant Comme constante
encore plus court :
As Constant(
Summarize( bygp = by( :HEADER_ID, :VALUE_STR ) );
aa = Associative Array( bygp[1], bygp[2] );
);
aa[Char( :HEADER_ID[Row()] )];
*) important : résumer les chaînes de magasins (également pour les colonnes numériques)
-> aa[char( nombre )]