안녕,
JMP를 처음 사용하고 많은 도움말을 검색하고 읽었으며 원을 그리며 돌아다녔습니다. 나는 내가 하고 있는 일이 쉽고 직설적이라고 생각하지만 JSL에서는 그런 느낌을 받지 못하고 있습니다. 더 복잡한 데이터 테이블이 있지만 코드가 작동하도록 하기 위해 테이블을 단순화했습니다. 5개의 열이 있는 테이블이 있는데 각각 4개의 열에는 제목에 "_Yield"가 있습니다. 13개의 행은 1과 0으로 구성되며 내가 하려는 것은 각 행에 대해 수율 열에서 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"
);
));
