Erreur de cycle de dépendance de formule de colonneSalut tout le monde,
Je me demande simplement comment nous pouvons faire références circulaires en JSL. Par exemple, j'ai une quantité de population et un taux d'échec. Mais le taux d'échec pour chaque année dépend de la survie les pièces.
Année Équipement d'origine Échec Survivre
1 100 1 99
2 99 2 97
3 97 3 94
Je sais que JMP ne permet pas à une colonne d'avoir une formule qui dépend de l'autre colonne formulée. Existe-t-il une astuce à contourner dans ce cas ?
Merci
Merci
Automatisation et scriptsRe : Erreur de cycle de dépendance de formule de colonneVous pouvez avoir des colonnes de formules dans JMP qui utilisent d'autres colonnes de formules.

Comment saisiriez-vous de nouvelles données dans votre cas ? Quelles colonnes doivent être calculées et en fonction de quelle(s) colonne(s) ?
Re : Erreur de cycle de dépendance de formule de colonneMerci pour votre suggestion. C'est ainsi que je le configurerais, mais il n'itère que sur 2 lignes et prendrait trop de temps pour cette ligne uniquement.
New Table( "test",
Add Rows( 7 ),
New Column ("Year", Set Values ([1,2,3,4,5,6,7])),
New Column ("Failure Rate", Set Values ([0.1,0.1,0.15,0.2,0.25,0.3,0.35])),
New Column( "original", Set Values( [100, ., ., ., ., ., .] ) ),
New Column( "failed", formula (:Failure Rate *:original) ),
New Column( "Survive", formula (:original - :failed ))
);
Wait( 2 );
For Each Row(
If( Row() != 1,
:original = Lag( :Survive )
)
);
Re : Erreur de cycle de dépendance de formule de colonneCalculez la nouvelle colonne Original et utilisez-la pour vos calculs
Names Default To Here(1);
dt = New Table("test",
Add Rows(7),
New Column("Year", Set Values([1, 2, 3, 4, 5, 6, 7])),
New Column("Failure Rate", Set Values([0.1, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35])),
New Column("original", Set Values([100, ., ., ., ., ., .])),
New Column("failed", formula(:Failure Rate * :original)),
New Column("Survive", formula(:original - :failed))
);
dt << New Column("OriginalF", Numeric, Continuous, Formula(
If(Row() == 1,
:original
,
Lag(:OriginalF) - Lag(:OriginalF) * Lag(:Failure Rate)
);
));
dt << New Column("FailedF", Numeric, Continuous, Formula(
:OriginalF * :Failure Rate;
));
dt << New Column("SurviveF", Numeric, Continuous, Formula(
:OriginalF - :FailedF
));

Re : Erreur de cycle de dépendance de formule de colonne jthi.C'est une façon très intelligente de briser le cycle de référence.
Re : Erreur de cycle de dépendance de formule de colonne@jthi a écrit:
Calculez la nouvelle colonne Original et utilisez-la pour vos calculs
puis : revenez aux anciens noms de colonnes.
Donc, l'astuce est la suivante : n'utilisez pas les "échecs" pour calculer les valeurs d'origine 
Names Default To Here(1);
New Table( "test",
Add Rows( 7 ),
New Table Variable( "original", 100 ),
New Column( "Year", Numeric, "Continuous", Format( "Best", 10 ), Set Values( [1, 2, 3, 4, 5, 6, 7] ) ),
New Column( "Failure Rate",
Numeric,
"Continuous",
Format( "Best", 10 ),
Set Values( [0.1, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35] )
)
);
New Column("Original", Numeric, Continuous, Formula(
If(Row() == 1,
:original
,
Lag(:Original) - Lag(:Original) * Lag(:Failure Rate)
);
));
New Column("Failed", Numeric, Continuous, Formula(
:Original * :Failure Rate;
));
New Column("Survive", Numeric, Continuous, Formula(
:Original - :Failed
));
Re : Erreur de cycle de dépendance de formule de colonnedrôle, comme une vieille voiture 
c'est bien que ça démarre après le 2ème essai.
pareil de ton côté ?
New Table( "test",
Add Rows( 7 ),
New Column( "Year", Set Values( [1, 2, 3, 4, 5, 6, 7] ) ),
New Column( "Failure Rate",
Set Values( [0.1, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35] )
),
New Column( "original", Set Values( [100, ., ., ., ., ., .] ) ),
New Column( "failed" ),
New Column( "survive" )
);
start = Function( {},
:survive << set formula(
If( Row() != 1,
:original = Lag( :Survive )
);
:failed = :Failure Rate * :original;
:original - :failed;
)
);
start();
start();
Re : Erreur de cycle de dépendance de formule de colonneAvec la quantité d'origine et les valeurs d'échec, vous pouvez remplir toutes les valeurs. (*)
Vous pouvez donc configurer un script qui se déclenche à chaque fois qu'une valeur est saisie.
Il faut cliquer une fois sur **)

... alors tout ira bien :
Si des lignes sont ajoutées ou qu'une valeur d'entrée (*) est modifiée, le tableau est mis à jour - toutes les autres modifications seront ignorées.
New Table( "test",
Add Rows( 7 ),
New Column( "original", Set Values( [100, ., ., ., ., ., .] ) ),
New Column( "failed", Set Values( [1, 2, 3, 5, 32, 2, 6] ) ),
New Column( "Survive" )
);
:survive << set Formula(
If( Row() != 1,
:original = Lag( :Survive )
);
:original - :failed;
);
Wait( 0 );
:survive << set Formula(
If( Row() != 1,
:original = Lag( :Survive )
);
:original - :failed;
);
modifier:
hm, je ne connais pas la différence avec la dernière fois, mais maintenant la mise à jour automatique ne fonctionne pas du premier coup
--> alors déclenche-le deux fois 
[J'espère que demain je n'aurai pas besoin de 3 essais...]
modifier:
inutile Pour chaque ligne supprimé.
**)
- une idée pour supprimer ce message ? ->
- une idée du pourquoi du dernier : survivre il manque une entrée [au moins c'est mieux aujourd'hui : il ne manque plus :]
- une idée de pourquoi aujourd'hui j'ai besoin de la commande formule 2x ???