基於列列表建立資料子集你好,
我有一個包含許多數據列的大型數據文件。 我想建立一種自動方法,根據列列表對原始資料進行子集化。
如果這個表是我的原始數據
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| # | # | # | # | # | # | # | # | # | # |
| # | # | # | # | # | # | # | # | # | # |
我想要子集的列列表可能是 [1,4,6,9]
我想產生一個如下所示的新表
我不能只是硬編碼要採用的列的原因是列表會經常更新,所以我想要一種更免提的方式來處理這個問題。
如果我需要提供更多信息,請告訴我。
謝謝!
回覆:根據列列表建立資料子集eval(evalexpr(
SubTable3[i] = Tables[i] << subset( selected rows(1), columns(
As Column(expr(MT_Col_Names[1])), As Column(expr(MT_Col_Names[2])) ), Invisible);
));
回覆:根據列列表建立資料子集也許嘗試一下
eval(evalexpr((
SubTable3[i] = Tables[i] << subset( selected rows(1), columns(
As Column(expr(MT_Col_Names[1])), As Column(expr(MT_Col_Names[2])) ), Invisible);
));
))
回覆:根據列列表建立資料子集我認為您沒有必要列舉 MT_Col_Names 中的所有項目或將它們包裝在 Column() 中。「MT_Col_Names」裡面有什麼類型的資料?
這是一個工作範例,其中包含代表我要保留的列名稱的字串清單:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Rows({1,2,3});
sub_cols = {"name", "age", "sex"}; //same role as MT_Col_Names
dt2 = dt << Subset(selected rows(1), columns(sub_cols));回覆:根據列列表建立資料子集你好,
當我使用以下方法時,這對我不起作用:
SubTable3[i] = Tables[i] << subset( selected rows(1), columns(Column(MT_Col_Names[1]), Column(MT_Col_Names[2]), Column(MT_Col_Names[3]), Column(MT_Col_Names[4]), Column(MT_Col_Names[5]), Column(MT_Col_Names[6])), Invisible);
錯誤是:

如果我改變'列'到“作為專欄” ,它有效(沒有錯誤),但所有列都顯示......
謝謝你的幫助,
尼爾
回覆:根據列列表建立資料子集這可能真的很容易,但我對你的清單感到困惑。您說您無法對要使用的列進行硬編碼,因為它會發生變化,但是當清單更新時,不需要有人最終列舉要使用的列嗎?否則,該清單從何而來? 如果腳本頂部有一個變數用於枚舉要使用的所有列,那麼維護起來是否足夠容易?如果是這樣,這裡有一個簡單的腳本可以做到這一點:
//list of columns
subset_cols = {:Name("1"), :Name("4"), :Name("6"), :Name("9")};
dt = Current Data Table();
dt << Subset( All rows, columns( subset_cols ) )