Re: Fonctions statistiques (Col Mean par exemple) éventuellement boguées sur la première ligne du tableau de données lors de l'utilisation de << Set Each Value pour remplacer les valeurs dans la colonneCela doit aller au support technique JMP
Ré : Fonctions statistiques (Col Mean par exemple) éventuellement bugguées sur la première ligne du tableau de données lors de l'utilisation de << Set Each Value pour remplacer les valeurs dans la colonneAprès avoir ajouté un formatage supplémentaire à l'impression de la valeur , l'agrégation Col ... passe au mode très lent qui est déjà connu à partir d'ici :
Comment-utiliser-la-formule-Col-Maximum-avec-un-quot-où-quot/mp/578576/highlight/true#M78599
newCol=New Column("new");
newCol << Set Each Value(Col Mean(write("-value, row # ",row(),"\!n");:Vals, write("groupby row # ",row()," ",newCol[row()],"\!n");:A));
Il semble que pour chaque ligne unique
- toutes les lignes sont évaluées : d'abord la valeur , puis l'argument GroupBy
- puis l'argument GroupBy de la ligne spécifique est évalué (à nouveau)
et ensuite les valeurs correspondantes sont collectées et agrégées.
Ensuite, cela commence avec la ligne suivante :
- toutes les lignes sont évaluées (à nouveau) : d'abord la valeur , puis l'argument GroupBy
- puis l'argument GroupBy de la ligne suivante est évalué (à nouveau)
et ainsi de suite....
Ceci explique pourquoi l'exécution évolue de manière quadratique avec la longueur des lignes, [comparer Comment-utiliser-la-formule-Col-Maximum.... ]
Drôle : les évaluations supplémentaires sont différentes de la lune - elle n'est pas là si vous ne regardez pas
Peut-être que quelqu'un de Jmp pourrait donner une vue plus détaillée...
impression complète de la version lente :
Voir plus...-value, row # 1
groupby row # 1 .
-value, row # 2
groupby row # 2 .
-value, row # 3
groupby row # 3 .
-value, row # 4
groupby row # 4 .
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 1 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 .
-value, row # 3
groupby row # 3 .
-value, row # 4
groupby row # 4 .
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 2 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 .
-value, row # 4
groupby row # 4 .
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 3 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 .
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 4 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 2.5
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 5 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 2.5
-value, row # 5
groupby row # 5 2.5
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 6 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 2.5
-value, row # 5
groupby row # 5 2.5
-value, row # 6
groupby row # 6 2.5
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 7 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 2.5
-value, row # 5
groupby row # 5 2.5
-value, row # 6
groupby row # 6 2.5
-value, row # 7
groupby row # 7 2.5
-value, row # 8
groupby row # 8 .
groupby row # 8 .
Re: Fonctions statistiques (Col Mean par exemple) éventuellement boguées sur la première ligne du tableau de données lors de l'utilisation de << Set Each Value pour remplacer les valeurs dans la colonneJe suis un peu inquiet lorsque j'utilise la même colonne en même temps comme entrée et sortie d'un calcul.
Cas extrême : Si Col ... L'agrégation a juste agi ligne par ligne comme Lag (), la sortie serait comme une chenille se déplaçant le long des lignes, ligne par ligne modifiant la sortie de l'agrégation.
Concernant la vitesse, c'est cool ça Col ... l'agrégation le fait beaucoup mieux.
Concernant la prévention du problème : idée astucieuse d'ajouter une rangée temporaire de rechange. Alternativement, on pourrait utiliser une colonne temporaire pour stocker les valeurs, n'est-ce pas ?
Concernant: Pourquoi?
[édité après l'entrée de la version lente]
hum...
L'ajout d'une fonction d'impression à l'argument GroupBy permet de voir ce qui se passe ...
En effet, le Valeur et Par groupe les fonctions sont évaluées deux fois.
D'abord pour obtenir des valeurs à comparer avec l'argument GroupBy de la ligne 1, puis à nouveau après avoir écrit le résultat sur la ligne 1.
newCol=New Column("new");
newCol << Set Each Value(Col Mean(Print(row());:Vals,<BR /> write("\!n groupby row # ",row()," ",newCol[row()],"\!n");:A));
une ligne avec juste un chiffre : lequel valeur fonction a été évaluée ?
une ligne avec grouper par ligne # ... : qui Par groupe fonction a été évaluée ?
1
groupby row # 1 .
2
groupby row # 2 .
3
groupby row # 3 .
4
groupby row # 4 .
5
groupby row # 5 .
6
groupby row # 6 .
7
groupby row # 7 .
8
groupby row # 8 .
groupby row # 1 .
1
groupby row # 1 2.5
2
groupby row # 2 .
3
groupby row # 3 .
4
groupby row # 4 .
5
groupby row # 5 .
6
groupby row # 6 .
7
groupby row # 7 .
8
groupby row # 8 .
groupby row # 2 .
groupby row # 3 .
groupby row # 4 .
groupby row # 5 .
groupby row # 6 .
groupby row # 7 .
groupby row # 8 .
Re: Fonctions statistiques (Col Mean par exemple) éventuellement boguées sur la première ligne du tableau de données lors de l'utilisation de << Set Each Value pour remplacer les valeurs dans la colonneIl a (TS-00036082) et le support l'a transmis au développement JMP. Le but de ce message était juste de rendre cela un peu plus visible.
Edit : Comme j'ai accepté cela comme solution, j'ajouterai une solution de contournement possible qui semblait fonctionner : ajoutez une ligne supplémentaire à votre table de données en tant que première ligne, utilisez << définissez chaque valeur pour mettre à jour les valeurs, puis supprimez cette ligne vide supplémentaire
// workaround
dt << Add Row(1, At Start);
Column(dt, "Column 1 1") << Set Each Value(Col Mean(:Column 1 1, :A));
dt << Delete Rows(1);
Le bug était présent pour moi pour JMP16.2 et JMP17.0
Les fonctions statistiques (Col Mean par exemple) peuvent être boguées sur la première ligne du tableau de données lors de l'utilisation de << Set Each Value pour remplacer les valeurs de la colonneEn essayant de faire fonctionner ma solution pour Existe-t-il un moyen plus rapide de boucler ? Je suis tombé sur un problème où la première ligne de mes données ne semblait pas correcte (en fait, le problème concernait tout le premier groupe).
Names Default To Here(1);
dt = New Table("Untitled 5",
Add Rows(8),
Compress File When Saved(1),
New Column("Vals", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 3, 4])),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 3, 4])),
New Column("Column 1 1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 3, 4])),
New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 3, 4])),
New Column("A", Character, "Nominal", Set Values({"A", "A", "A", "A", "B", "B", "B", "B"})),
New Column("B", Character, "Nominal", Formula(Col Mean(:Vals, :A)))
);
dt << New Column("Column 3", Numeric, Continuous, <<SET each="" value=""></SET>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/51122iF900862836EE33DB/jthi_1-1678901605470.png" role="button" title="jthi_1-1678901605470.png" alt="jthi_1-1678901605470.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P>Il me semble que la moyenne des colonnes est calculée pour la première ligne, puis la moyenne pour le reste du <STRONG>groupe</STRONG> est calculée à l'aide de cette valeur déjà remplacée. Il existe une solution de contournement où vous pouvez ajouter une ligne vide comme première ligne dans la table de données -> utiliser << définir chaque valeur -> supprimer cette première ligne.</P>
<P> </P>
<P>J'ai déjà ouvert un ticket concernant ce problème (TS-00036082) et le support JMP a soumis un rapport de bogue à l'équipe de développement, mais je voulais le rendre plus visible. Je devrais peut-être vérifier certains de mes anciens scripts pour qu'il n'y ait aucun endroit où j'utilise << Set Each Value() pour remplacer les valeurs existantes (je l'utilise généralement lors de la création de colonnes) lors de l'utilisation de fonctions de colonnes statistiques.</P><LINGO-LABS id="lingo-labs-613593" slang="en-US" mode="UPDATE"><LINGO-LABEL>Ingénierie de la qualité et des procédés</LINGO-LABEL></LINGO-LABS>Ré : Fonctions statistiques (Col Mean par exemple) éventuellement boguées sur la première ligne du tableau de données lors de l'utilisation de << Définir chaque valeur pour remplacer les valeurs dans la colonne
@hogi a écrit :
Après avoir ajouté un formatage supplémentaire à l'impression de la valeur , l'agrégation Col ... passe au mode très lent qui est déjà connu à partir d'ici :
Comment-utiliser-la-formule-Col-Maximum-avec-un-quot-où-quot/mp/578576/highlight/true#M78599
Je viens de vérifier le comportement avec Jmp 17.2 et les versions ultérieures (<=18.1.1). Le problème a disparu :
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Clear Select << Select Rows( Index( 5, 40 ) ) <<DELETE rows=""></DELETE>
gives:
<SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1734384257364.png" style="width: 174px;"><span class="lia-inline-image-display-wrapper" image-alt="hogi_0-1734384257364.png" style="width: 174px;"><img src="https://us.v-cdn.net/6038925/uploads/images/71281i524773A5E5A75986/hogi_0-1734384257364.png" width="174" height="408" role="button" title="hogi_0-1734384257364.png" alt="hogi_0-1734384257364.png" /></span></SPAN>
so, the value and GroupBy values are calculated for every row - then the GroupBy values are calculated again for every row.<BR />That's it.