やあ、
JMP を初めて使用するため、大量のヘルプを検索して読み、堂々巡りをしてきました。 私がやっていることは簡単で単純なことだと思いますが、JSL からはそのような感覚は得られません。 もっと複雑なデータテーブルがありますが、コードを機能させるためにテーブルを単純化しました。 5 つの列を持つテーブルがあり、各 4 つの列の見出しに「_Yield」が付いています。 13 行は 1 と 0 で構成されており、私がやろうとしているのは、yield 列で最初に 1 が出現したことを示す列を各行に作成することです。 列名 (contain _yield を除く) は常に同じ名前を持つとは限らず、同じ場所にあるとは限らないため、これをスマートにする必要があります。 収量列だけを見て、これを行列に変換して、探している値を見つける方法を見つけました。 これらの値を列ヘッダーに変換できません。 テスト列には行列内の位置が表示され、下の結果列にはヘルプ列に表示される内容が表示されます。前もって感謝します。

dt = Current Data Table();
lst = dt << Get Column Names(string);
dt << clear column selection;
For(i = 1, i <= N Items(lst), i++,
If(Contains(lst[i], "_Yield") > 0,
Column(dt, lst[i]) << set selected;
selcols = dt << get selected columns;
)
);
Mat2 = dt << Get as Matrix(selcols);
DesList = List();
For(i = 1, i <= N Rows(Mat2), i++,
Pos = Min(Loc(Mat2[i, 0]));
Insert Into(DesList, Pos);
);
dt << New Column("Test", Numeric, Continuous, <<SET values="">= 1);
If(
result >= 1, (newcolumn[j] = selcols),
Is Missing(result), (newColumn[j] = Parse("PASS"))
);
);</SET>こんにちは。
お返事をありがとうございます。 Filter Each は私にとってアクティブな機能ではありません。 おそらく私が V15 を使用しているからかもしれませんが、one_idx 方程式を使用して列名を選択する現在の方法を使用することができ、それはうまくいきました。 先週は Loc 機能に苦労していたので、これは本当に助かります。
一例:
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([0, 0, 1, 0])),
New Column("A_YIELD", Numeric, "Continuous", Format("Best", 12), Set Values([0, 0, 1, 0])),
New Column("B_YIELD", Numeric, "Continuous", Format("Best", 12), Set Values([1, 0, 0, 0])),
New Column("C_YIELD", Numeric, "Continuous", Format("Best", 12), Set Values([1, 1, 1, 0]))
);
// Get column names which end in _YIELD
yield_cols = Filter Each({col_name}, dt << Get Column Names("Continuous", "String"),
Ends With(col_name, "_YIELD");
);
// create new column to get _YIELD column name
dt << New Column("RESULT", Character, Nominal, << Set Each Value(
one_idx = Loc(dt[Row(), yield_cols], 1);
If(N Items(one_idx),
yield_cols[Min(one_idx)];
,
"PASS"
);
));
