列公式依賴循環錯誤大家好,
只是想知道我們能做什麼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 嗎???