從初始列列表中迭代建立包含所有減法排列的列我有一個列列表,我需要建立一系列新的列,其中列出的列之間的差異的每個排列。列表中的列數可以有所不同,下面的非迭代範例涵蓋 3 列(12 到 14)。
Current Data Table() << New Column(Head Name( As Namespace( Column( 12 ) ) )||" - "||Head Name( As Namespace( Column( 13 ) ) )||" HSD Threshold Matrix", Numeric, "Continuous", Format("Best", 10), Formula(Col Maximum(If(Contains(:Level, Head Name(As Namespace(Column(13))), 1), As Column(12)), :Group, :Size)));
Current Data Table() << New Column(Head Name( As Namespace( Column( 12 ) ) )||" - "||Head Name( As Namespace( Column( 14 ) ) )||" HSD Threshold Matrix", Numeric, "Continuous", Format("Best", 10), Formula(Col Maximum(If(Contains(:Level, Head Name(As Namespace(Column(14))), 1), As Column(12)), :Group, :Size)));
Current Data Table() << New Column(Head Name( As Namespace( Column( 13 ) ) )||" - "||Head Name( As Namespace( Column( 14 ) ) )||" HSD Threshold Matrix", Numeric, "Continuous", Format("Best", 10), Formula(Col Maximum(If(Contains(:Level, Head Name(As Namespace(Column(14))), 1), As Column(13)), :Group, :Size)));
自動化和腳本編寫回覆:迭代地建立包含初始列列表中減法的所有排列的列例如,您可以使用NChooseK Matrix()建立組合(或 DoE)
Names Default To Here(1);
mylist = {12, 13, 14};
possible_group_idx = NChooseK Matrix(3,2);
my_groups = Transform Each({idx}, possible_group_idx,
mylist[idx]
);
[12 13, 12 14, 13 14]
回覆:迭代地建立包含初始列列表中減法的所有排列的列雅爾莫
謝謝,看起來會起作用。沒有時間研究細節,但想知道是否有如何使用它的例子?
回覆:迭代地建立包含初始列列表中減法的所有排列的列循環矩陣(或將其轉換為列表列表)並建立列。
回覆:迭代地建立包含初始列列表中減法的所有排列的列不確定這是否是您的意思,但我在這裡找到了一些有用的東西。更好的是它不依賴列號。
Names Default to Here(1);
dt = Current Data Table();
//Select X Variable ____________________________________________________________________________________________________________________________________________
cdb = Column Dialog("Add continuous variables you want to plot as X" ,
colxx = ColList( "X", Min Col( 1 ) ),
);
show(cdb);
Eval List(cdb[1::N Items(cdb)-1]);
Summarize(dt, uniqNames = by(colxx[1]));
Show(uniqNames);
Num = NItems(uniqNames);
For( k = 1, k <= N Items( uniqNames ), k++,
// Loop through all columns finding non NA values
For( i = 2, i <= N Items( uniqNames ), i++,
if (i > k, Current Data Table() << New Column(Char(uniqNames[k])||" - "||Char(uniqNames[i])||" Matrix", Numeric, "Continuous", Format("Best", 10), Formula(Col Maximum(If(Contains(:Level, Char(uniqNames[i]), 1), As Column(uniqNames[k])), :Group, :Size)));
)
)
)
;
已解決:使用循環獲取列值 - JMP 用戶社區
回覆:從初始列列表中迭代建立包含所有減法排列的列Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Cities.jmp");
mycols = {"OZONE", "CO", "SO2", "NO", "PM10"};
possible_group_idx = NChooseK Matrix(N Items(mycols), 2);
my_groups = Transform Each({idx}, As List(possible_group_idx), Output("List"),
mycols[idx]
);
For Each({cols}, my_groups,
Eval(Substitute(
Expr(dt << New Column(cols[1] ||"_"||cols[2], Numeric, Continuous,
Formula(_col1_ + _col2_)
)),
Expr(_col1_), Name Expr(AsColumn(dt, cols[1])),
Expr(_col2_), Name Expr(AsColumn(dt, cols[2]))
));
);
Write();