使用其他行數據的列公式你好! 我有一個數據庫樣式的數據表,用於存儲來自一系列流程步驟的數據。 每行代表給定流程步驟中的一個樣本,並且在該行中存在對父樣本的引用。 母樣品來自相同的材料,但在之前的工藝步驟中。 我主要通過 jmpapp 與此數據庫表進行交互,因此腳本是操作數據的可接受的方式。
在此表中,我想計算有關每個樣本的一些參數,包括該樣本與父樣本相比有何變化。 其中一些參數可能計算如下:
孩子的測量數據 * 父母的測量數據。
其他參數可以按如下方式計算(其中父級的計算值類似於上面的等式):
子項測量數據 * 父項計算值
我目前有一個有效的解決方案,但它非常慢,並且需要大量調用“重新運行公式”。
因此,在描述我當前的解決方案之前,我想獲得一些關於實現此目標的最佳方法的建議。 也許我對數據結構的理解是錯誤的! 如果可能的話,如果我能將計算保留在這個表中,那就太棒了。
下圖顯示了數據的當前結構以及如何將其從父級級聯到子級以進行所有正確的數學運算。
感謝您的幫助!

回复:使用其他行數據的列公式公式編輯器中的列摘要統計數據可以採用一個或多個分組變量。
Col Mean( :Parent Data, :ParentID )
將為您提供按 ParentID 分組的“父數據”中數據的平均值。
回复:使用其他行數據的列公式使用帶有 row() 和下標的 where 語句查看此鏈接
JMP 指數匹配
但你嘗試使用它的次數越多,它就會變得複雜...... 我發現對於這樣的事情,使用 Excel 並編寫導入數據腳本會更快/更容易。
回复:使用其他行數據的列公式@彼得_赫什,是的,這是有道理的,這就是我目前正在做的事情。 它工作正常,但由於我對數據進行分組的方式,我目前正在循環訪問數據的不同子集,這需要相當多的時間。 另外,如果父數據列能夠在父行更新時更新,那就太好了,這就是為什麼我希望可以使用列公式。 如果我必須堅持使用子集和更新解決方案,我可以在表中使用“增殖父數據”腳本或其他腳本。
@唐麥考馬克,僅使用“ParentID”列定義父/子關係。 每行都包含樣本 ID 和父 ID,因此本質上,子項必須向父項查找鏈才能找到所需的數據。
我發現可以使用類似這樣的列公式來獲取父數據,但這些公式需要運行多次,以便數據可以通過依賴的行/列向下級聯。 在第一個表的示例中,第一次運行公式時,來自 :Data 的數據將填充到 :ParentData 中,但 :ParentData/ParentData 列將留空,因為它的公式在填充數據之前運行。 或者.. .至少是這樣的。
感謝您的想法!
dt = CurrentDataTable();
parent = :ParentID;
rows = dt << GetRowsWhere(:SerialNumber == parent);
Mean(Column(dt, "LayersMPAFraction")[rows]);
回复:使用其他行數據的列公式您如何定義父/子關係? 如果不首先了解這一點,就很難想出一個可靠的解決方案。 查看您的原始解決方案可能會有所幫助。
回复:使用其他行數據的列公式好的,我認為行之有效的技巧是僅使用父 ID 和父數據列對原始數據進行子集化。然後將其連接回原始數據。將父 ID 與子 ID 進行匹配。希望這是清楚的。如果不清楚,請告訴我
回复:使用其他行數據的列公式謝謝@彼得_赫什!
根據我的描述,是的,滯後可以正常工作,但你是對的,數據並不總是以這種方式構建。 子數據和父數據可以包含在不同數量的行中,距新單元格的距離不同。 例如,我可能有 3 行樣本 ID A 數據,我希望對其進行平均以包含在子項的所有行中。 並且同一個父母可能有多個孩子。
看來我的例子過於簡單化了哈哈。 也許您提到的另一種方式可以提供幫助?
回复:使用其他行數據的列公式@mringqui ,是的,使用公式生成器中的滯後函數進行此操作應該沒有問題。我不確定你的數據結構是否總是這樣。如果父母和孩子之間的間距並不總是相同,有一種不同的方法可以做到這一點。
回复:使用其他行數據的列公式有人有主意嗎?