Objet : Col Median (et autres) : ajouter l'option "Où" - Statut changé en : ReconnuSalut @hogi , Merci pour votre suggestion! Nous avons enregistré votre demande et la prendrons en considération.
Objet : Col Median (et autres) : ajouter l'option "Où" - Statut changé en : EnquêteRe : Col Median (et autres) : ajouter l'option "Où" - Statut changé en : Nous l'aimons ! (dans la file d'attente)@hogi cette question est examinée de près alors que nous cherchons des moyens d'améliorer l'utilisation des clauses Where( ) dans JMP.Merci pour la suggestion!
Re : Col Median (et autres) : ajouter l'option "Où"merci 
Col Median (et autres) : ajouter l'option « Où »☐ nouvelle fonctionnalité intéressante
☑ pourrait aider de nombreux utilisateurs !
☐ supprime un « bug »
☐ agréable à avoir
☐ personne n'en a besoin
#monTop10_2022
Il existe une série de messages avec des questions sur la façon de restreindre le Col ... agrégation fonctions à un sous-ensemble spécifique.
Calculer la moyenne des colonnes tout en limitant les observations utilisées
JMP10 : les fonctions Col Max() et Col Min() ont renvoyé les données de la ligne exclue
Fonctions de colonne et états de ligne
Comment utiliser la formule Col Maximum avec une condition « où »
Exclure les données dans la formule
Cas d'application :
- exclu rows from the aggregation:
Col Max(if(not(excluded()), :weight,.),: sex)
or even shorter (if one doesn't need values in the excluded rows);
Col Max(:weight, :sex, :excluded())
- Benchmark some data with a reference data set (country A in ce post)
:data / Col Maximum(if(:country="A", :data,.))
Comme on peut le voir dans les exemples ci-dessus, la solution simple est une instruction If à l'intérieur de l'agrégation Col xyz :
col Mean( if(:sex=="M", :weight,.), :age);
col Mean( if(not(excluded()), :weight,.), :age)
Le problème:
L'approche est EXTRÊMEMENT lente - si le sous-ensemble if -condition contient une comparaison de chaîne :
Comment-utiliser-la-formule-Col-Maximum-avec-un-where/M78599
Ensuite, le temps évolue de manière quadratique avec le nombre de lignes et même pour les petits ensembles de données avec seulement quelques 1000 entrées, le calcul prend quelques secondes .
Pour des ensembles de données contenant quelques millions d'entrées, cela prendrait des mois (!!!) - mais serait interrompu par un délai d'attente et un message d'erreur apparaîtrait. Pas sympa !
Mon souhait :
corriger le bug
Encore mieux :
Fournir une option where supplémentaire pour les agrégations Col xyz
- qui corrige automatiquement le problème de timing : restreint d'abord l'ensemble de données, puis applique l'agrégation (--> beaucoup plus rapide, même si l'accélération cool "col..." a un bug)
- qui facilitent les définitions de sous-ensembles,
au lieu de (*), il vous suffit de :
col Mean(:weight, :age, where(:sex=="M"))
col Mean(:weight, :age, where(not(excluded())))
exemples de timing, copiés ici

version corrigée - dans une version précédente, la capture d'écran affichait [ms] au lieu de [s]
plus de souhaits soumis par 
Automatisation et scriptsAnalyse et modélisation de données de baseFusion et nettoyage des donnéesExploration et visualisation des donnéesPersonnalisation de massePartage et communication des résultatsRe : Col Median (et autres) : ajouter l'option "Où"pour le moment où (...) sera disponible dans une future version de Jmp, on peut accélérer l'agrégation des cols par ordres de grandeur via la solution de contournement
changer le type de données en numérique - ou utiliser une colonne de formule numérique.
https://community.jmp.com/t5/Discussions/Tips-and-Tricks-best-practice-with-JMP-JSL/td-p/662686
Re : Col Median (et autres) : ajouter l'option "Où"Merci, @SamGardner , @Sarah-Sylvestre , c'est disponible maintenant en JMP18 : )
Avant de changer le statut en Livré, pourriez-vous s'il vous plaît vérifier si l'utilisation de Where est comme prévu dans cet extrait ?
Par rapport à l'approche originale, c'est extrêmement lent : (
dt = Open( "$SAMPLE_DATA/Airline Delays.jmp" );
Print("old aproach");
t0 = hptime();
New Column( "max - 1st of month",
Formula( Col Maximum( if(:Day of Month == 1 , :Arrival Delay,.), :Month) )
);
dt << run formulas();
show((hp time()-t0)/1000000); // 0.5s
Print("new aproach - with Where");
t0 = hptime();
New Column( "max - 1st of month",
Formula( Col Maximum( :Arrival Delay, :Month, Where( :Day of Month == 1 ) ) )
);
dt << run formulas();
show((hp time()-t0)/1000000); // 140s
Re : Col Median (et autres) : ajouter l'option "Où"Print("new aproach - with Where, semi-bugfix");
t0 = hptime();
myWhere = Where( :Day of Month == 1 ) ;
Eval (Eval Expr(New Column( "max - 1st of month",
Formula( Col Maximum( :Arrival Delay, :Month, Expr(myWhere) )
))));
dt << run formulas();
show((hp time()-t0)/1000000); // 40s - better but still way too slow ...Re: Col Median (et autres) : ajouter l'option « Où »Ah, ça ne marche pas encore : (
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "max - 1st of month",
Formula( Col Minimum( :weight, :sex, Where( :age ==17 ) ) )
);