如何取得行中缺少資料的多列的最大值!你好,
假設我們有一個資料集,我們希望得到所選列的最大值
dt = New Table( "Untitled",
New Column( "a@b;2", Numeric, Set Values( [12, 33, 1] ) ),
New Column( "b", Numeric, Set Values( [2, 11, 2] ) ),
New Column( "c@d;3", Numeric, Set Values( [333, 1, 0] ) )
);
colnames = dt << getcolumnnames;
use_cols = {};
include = {"@"};
For( j = 1, j <= N Items( include ), j++,
For( i = 1, i <= Nitems( colnames ), i++,
If(Contains(colnames[i], include[j]),
insert into (use_cols , colnames[i]))
));
dt << new column("max_col",numeric,formula(Maximum(use_cols)))
我不明白為什麼它會傳回 max_col 中的缺失值? 我們應該循環使用 use_cols 嗎?
謝謝!
資料混合與清理回覆:如何取得行中缺少資料的多列的最大值!對不起!這沒有成功!回覆:如何取得行中缺少資料的多列的最大值!感謝 txnelson 提供的出色解決方案! 你總是樂於提供細節並把事情解釋得非常清楚!回覆:如何取得行中缺少資料的多列的最大值!在運行 Windows 10 的 Windows PC 上運行,我返回了幾個版本的 JMP 並運行了您的腳本,它在所有版本上都正確運行。

您的第二個條件是,有時資料中缺少值不應成為問題。Maximum() 函數處理缺失值。
由於不了解您的腳本的更多信息,我會指出一個可能的問題。如果您查看為 max_col 列建立的公式,您將看到:

該公式依賴於列表“use_cols”,因此每次運行或重新運行該公式時,它都會轉到列表並使用“use_cols”“在該時間點”的值並將其放入公式中。如果“use_cols”的值為“ {名稱(“a@b;2”), 名稱(“c@d;3”)} ”,一切都會順利進行。如果由於某種原因,則清單「use_cols」更改了其值,則公式可能不起作用,並且您將獲得缺少的值。你真正想要的是公式是
Maximum( {:Name( "a@b;2" ), :Name( "c@d;3" )} )
根據我的經驗,最簡單的方法是將新列和公式指定為:
Eval(Parse("dt << new column(\!"max_col\!",numeric,formula( Maximum(" || char(use_cols) || ")));"));
其結果是公式被指定為:

回覆:如何取得行中缺少資料的多列的最大值!你好,
您只需要透過在最後一個語句中加入「as columns」來幫助 JMP 確定變數「use_cols」指的是列:
dt << New Column( "max_col", numeric, formula( Maximum( as columns( use_cols ) ) ) );
回覆:如何取得行中缺少資料的多列的最大值!有時忘記新增列也可能包含缺失值。 當我建立數據表時我不知道如何添加它們。