Hola,
Nuevo en JMP y he buscado y leído mucha ayuda y dando vueltas en círculos. Creo que lo que estoy haciendo es fácil y directo, pero no obtengo esa sensación de JSL. Tengo una tabla de datos más complicada, pero con el propósito de intentar que mi código funcione, he simplificado mi tabla. Tengo una tabla con 5 columnas, 4 de cada una tienen "_Rendimiento" en el encabezado. 13 filas constan de 1 y 0 y lo que intento hacer es crear una columna para cada fila que muestre la primera aparición de un 1 en las columnas de rendimiento. Necesito que esto sea inteligente ya que los nombres de las columnas (aparte de contener _rendimiento) no siempre tendrán los mismos nombres ni estarán en las mismas ubicaciones. Descubrí cómo simplemente mirar las columnas de rendimiento y convertir esto en una matriz donde luego puedo encontrar los valores que estoy buscando. Simplemente no puedo convertir estos valores en los encabezados de columna. La columna de prueba muestra la posición en la matriz, la columna de resultados a continuación muestra lo que debería obtener en la columna de Ayuda.Gracias de antemano.

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>Hola Jthi,
Gracias por su respuesta. Filter Each no es una función activa para mí. Tal vez porque estoy usando V15 pero pude usar mi forma actual de seleccionar nombres de columnas con su ecuación one_idx y funciona de maravilla. Tuve problemas con la función Loc la semana pasada, así que esto realmente ayuda.
Un ejemplo:
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"
);
));
