列公式依赖循环错误大家好,
只是想知道我们能做什么JSL 中的循环引用。例如,我有人口数量和失败率。 但每年的失败率取决于生存率部分。
年份 原始设备 故障存活
1 100 1 99
2 99 2 97
3 97 3 94
我知道 JMP 不允许列的公式依赖于其他公式化的列。 对于这种情况有什么技巧可以解决吗?
谢谢
谢谢
自动化和脚本编写回复:列公式依赖循环错误您可以在 JMP 中使用其他公式列的公式列。

您将如何在您的案例中输入新数据? 应计算哪些列并基于哪些列?
回复:列公式依赖循环错误感谢您的建议。 这就是我的设置方式,但它只迭代 2 行,并且仅迭代该行就需要很长时间。
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 )
)
);
回复:列公式依赖循环错误计算新的原始列并将其用于您的计算
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
));

回复:列公式依赖循环错误 jthi。这是打破引用循环的非常聪明的方法。
回复:列公式依赖循环错误@jthi写道:
计算新的原始列并将其用于您的计算
然后:切换回旧的列名称。
所以,技巧是:不要使用“失败”来计算原始值:)
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
));
回复:列公式依赖循环错误有趣,就像一辆旧车:)
很好,第二次尝试后就开始了。
你这边也一样吗?
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();
回复:列公式依赖循环错误使用原始数量和失败值,您可以填写所有值。 (*)
因此,您可以设置一个脚本,每次键入值时都会触发该脚本。
您必须点击一次**)

...那么一切都会好起来的:
如果添加行或更改输入值 (*),表就会更新 - 所有其他更改都将被忽略。
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;
);
编辑:
嗯,我不知道和上次有什么区别,但现在自动更新一开始就不起作用
--> 所以只需触发两次;)
【希望明天不需要3次试验……】
编辑:
不必要对于每一行已删除。
**)
- 知道如何摆脱这个消息吗? ->
- 知道为什么最后一个:存活条目丢失了[至少今天好多了:不再丢失了:]
- 知道为什么今天我需要公式命令 2x 吗???