事件發生前的行數在不使用 JSL 的情況下,是否有一種方法可以計算一列,告訴您在事件發生之前還剩下多少行?
以下公式有效,但需要使用者在「應用」中點擊 n 次
我們可以把這個公式放在一個 for 迴圈中「套用它」n 次嗎?

進階統計建模自動化和腳本編寫品質和工藝工程回覆:事件發生前的行數我沒有想到不需要 JSL 的簡單方法,它允許您使用原始公式而無需按“應用”或多次使用重新運行公式。 由於在這種情況下沒有變量,甚至建立公式也有點困難(即使 for 循環也有索引變量)。
例如,如果最後一行之後沒有事件,則無法輕鬆處理最後一行(而且公式也不容易解釋):
If(:Event == 1,
0,
For(i = 1, i <= N Rows() - Row(), i++,
If(Lag(:Event, -1*i) == 1,
Break();
);
);
i;
);
回覆:事件發生前的行數我正在尋找一個非常容易向新 JMP 用戶解釋的公式。
- 在循環中添加我的原始公式,這樣您就不需要單擊“應用”,這將是最容易解釋的。
- 顛倒順序很直觀,但需要額外的步驟(見上文)
- 創建臨時變數的解決方案看起來就像將腳本製作成公式(程式設計師思維方式,對於新使用者來說並不理想)。
所以也許就像問一樣簡單,我如何循環一個公式,以便它被應用 N 次?
回覆:事件發生前的行數此時我不得不問:我們在這裡尋找什麼? 哪個單一公式也是不言自明的?
我提供的公式是一個單一的公式(如果在某個特定點之後沒有事件,則需要進行一些小的更改來處理情況),但很難不言自明,但可以通過使用具有良好名稱的支持變量來使其更接近公式。
回覆:事件發生前的行數也許我們可以利用這樣一個事實:如果行順序相反,解決方案會在 JMP 中自行填充?

例如,這將顛倒事件的順序。
事件反轉:
:Event[(N Rows() - Row()) + 1]
現在,隨著從上到下的計算,值會自動填充
反轉事件後的 n 行:
If( :Event inverted == 1, 0,
Lag( :n rows after inverted event, 1 ) + 1
)
最後,我們扭轉了該專欄。
:n rows after reversed event[(N Rows() - Row()) + 1]
關於如何用一個易於解釋的公式來做到這一點有什麼想法嗎?
回覆:事件發生前的行數您可以使用更複雜的公式。 像這樣的東西可以工作(可能無法正確處理所有特殊情況):
If(Row() == 1,
m_events = Loc(:Event << get as matrix, 1);
);
smallerRows = Loc(Row() <= m_events);
If(N Items(smallerRows) == 0,
0,
rowNextEvent = m_events[smallerRows[1]];
If(rowNextEvent,
rowNextEvent - Row();
);
);