您好,我想實作一個公式來「初始化」表中的一些資料。具體來說,我想從列中的所有元素中減去測試運行的第一次重複的值(重複資訊包含在另一列中)。
我附上我正在處理的表格。該公式將整合到“X_35”列中。這個想法是為每個測試分配在第一次重複分析(列X_21)時獲得的X_22中包含的值,但是按測試條件進行過濾,特別是我對按其他列(例如X_5、X_7和X_8)進行分隔感興趣。之後,我將對每一行套用差異,從第一次重複中取得每個點的偏移量。如果可能的話,我想找到使用列公式的解決方案,避免手動輸入值。
我正在使用 JMP 17
謝謝
歡迎來到社區。
我對你的要求有點困惑。我在你的數據中看到的是
X_31 列定義了資料的 8 個等級中的每一個,X_21 列的每個行分組都具有 1 到 980 的子分組值。
我認為您想要做的是,對於 X_21 值不為 1 的給定行,請查看其 X_5、X_7 和 X_8 的值,然後找到 X 的初始值與列 X_22 的匹配值並從X_22 列的當前行值中減去該值。
我對自己的評估完全沒有信心。檢查資料後發現,對於 X_31 初始值的每組,列 X_5、X_7 和 X_8 的組合要多得多。
您目前在提供的資料表中顯示的內容(如果 X_21 的值等於 1,則從 X_22 列複製 X_35 的值)在 JMP 中很容易做到。理解你想要的其他行是什麼是令人困惑的。如果您可以提供第 7 行和第 14 行的預期結果以及得出結果所採取的步驟,將會非常有幫助。
您好,感謝您的快速回覆。抱歉我的解釋很糟糕,但我希望解釋起來比解決起來更複雜。
我將嘗試使用示意圖表。
目標是獲得“初始值”列,對於每個測量,該列具有與第一次重複相對應的值,具體取決於測試類型,此處標識為A 或B。得到了值從第一個實驗開始,從 0 開始移動。
您在其他訊息中看到的公式是我嘗試使用 if 條件和重複次數來編寫「初始值」列,我的問題是在其他條件中編寫什麼以獲得不同重複次數的相同值。
再次感謝您
列公式可用於建立您想要的內容
As Constant( dt = Current Data Table() );
currentType = :Type;
theInitialValue = :Value[(dt << get rows where( :Type == CurrentType & :Repetition == 1 ))[1]];
:Value - theInitialValue;

此方法有效,但是,如果資料表超過 55,000 個,則公式效率不高。
更有效的方法是使用簡單的腳本建立一個僅包含初始值的新表,然後將該表合併回原始表,其中匹配將允許將初始值複製到所有匹配的表中。
names default to here(1);
dt=
New Table( "Example2",
Add Rows( 8 ),
New Column( "Type",
Character,
Set Values( {"A", "A", "A", "A", "B", "B", "B", "B"} )
),
New Column( "Repetition",
Numeric,
Set Values( [1, 2, 3, 4, 1, 2, 3, 4] )
),
New Column( "Value",
Numeric,
Set Values( [4, 10, 8, 7, 6, 9, 5, 10] )
)
);
// Create a table with the initial values
dt << select where(:Repetition == 1 );
initialDT = dt << subset( selected rows(1), columns({:Type,:Value}));
// Rename column Value to Initial Value
initialDT:Value << set name("Initial Value");
// Merge the values back to the original table
dt << Update(
With( initialDT ) ,
Match Columns( :Type = :Type )
);
// Create a column that contains the difference
dt << New Column( "Difference",
formula( :Value - :Initial Value )
);

如果您更頻繁地執行此類標準化步驟,您可能會考慮標準化 GUI 。
除了減去「第一個」值之外,它還提供了更多選項,例如「last」、N-1、「median」、「mean」(後者甚至考慮了行排除)。
您可以決定是否要計算這些值 - 或者您是否喜歡在輸入列更新時自動更新值的公式。
謝謝!
我現在正在嘗試使用我需要的所有變數來實現程式碼,目前一切正常。