Cómo hacer un script JMP para crear una nueva ventana para la entrada del usuario asignando valores a una columna basada en otra columnaHola,
Estoy atascado en una parte específica de mi script JMP y espero obtener ayuda de un par de ojos diferente.
Tengo un conjunto de datos que se ve así, pero con muchas más categorías, cada una con nombres más largos.

Quiero crear otra columna, con valores numéricos, basados en la columna dada. Este producto debe estar completamente automatizado, con una ventana emergente con cada una de las categorías enumeradas, con cuadros de edición de números en los que el usuario puede ingresar los valores numéricos que corresponderán a una categoría. Por ejemplo:
Cuadro de ventana emergente: nueva ventana con todas las indicaciones en el cuadro de ventana emergente.
Ingrese el valor correspondiente a A: ___1___ Ingrese el valor correspondiente a B: ___2___ Ingrese el valor correspondiente a C: ___3___ Ingrese el valor correspondiente a  ___4___ Ingrese el valor correspondiente a E: ___5___ |
La tabla de datos resultante debería verse así:

A continuación se muestra el script JMP que tengo en este momento. También he subido el archivo JMP a esta publicación. Con lo que necesito ayuda está en texto rojo debajo. Tengo problemas para asignar el i-ésimo valor en el ciclo for, según la entrada del usuario y correspondiente a la i-ésima categoría única en la lista, unique_char , a la i-ésima posición en la lista numérica inicializada, num_list , que se utilizará más adelante en el siguiente ciclo for para crear la columna 2 (al final del script JMP a continuación).
dt = Current Data Table();
//get the unique character variable list
Names Default To Here( 1 );
col9 = Column(dt, "Column 1");
unique_char = Associative Array(col9) << get keys; // unique_char = {"A", "B", "C", "D", "E"}
//get n items in character variable list
nuniquechar = N Items(unique_char); //will be 5, if categories are A, B, C, D, E
//initalize number list
num_list = {};
//create new window to create multiple number edit boxes
nw = New Window( "Set Values",
<<MODAL> // HELP:
// name a numeric variable on each iteration that will be the holder of a numeric edit box
// put the resulting ith entry into the num_list
num_list[i] = number edit box(),
// number box default is null/missing. If no input, place a missing value in the num_list
)
);<BR /><BR />// TO DO: <BR />// Create new column assigning the num_list values to <BR />// the corresponding rows based the unique character value. <BR />// Pseudo-code: <BR />// for(i in 1:nuniquechar)<BR />// if :column 1 = unique_char[i], num_list[i]<BR />//<BR />//</MODAL>Los resultados de esto serán la versión automatizada y fácil de usar del uso de la siguiente lógica condicional para hacer que la columna 2 se base en las categorías de la columna 1.

Tabla de datosRe: Cómo hacer un script JMP para crear una nueva ventana para la entrada del usuario asignando valores a una columna basada en otra columnaEstoy usando << Establecer función con el cuadro de edición de números para obtener los valores en una matriz asociativa única_aa. Luego, use esa matriz asociativa para construir la columna de fórmula necesaria, después de cerrar la ventana modal.
Names Default To Here(1);
dt = Current Data Table();
//get the unique character variable list
col9 = Column(dt, "Column 1");
unique_char = Associative Array(col9) << get keys;
nuniquechar = N Items(unique_char); //will be 5, if categories are A, B, C, D, E
unique_aa = Associative Array(unique_char, Repeat({.}, nuniquechar)); //repeat to initialize values as missing
//create new window to create multiple number edit boxes
vlbExpr = V List Box();
For(i = 1, i <= nuniquechar, i++,
Insert Into(vlbExpr, Text Box("Number for " || Char(unique_char[i]) || ":")); //i.e. "Number for A:"
Eval(
Eval Expr(Insert Into(vlbExpr, Number Edit Box(., <<SET function=""></SET>
Para obtener información sobre Eval (EvalExpr ()), consulte Inserte una expresión en otra usando Eval Insert, Eval Expr, Parse y Substitute . Y si quieres tener fórmula
Re: Cómo hacer un script JMP para crear una nueva ventana para la entrada del usuario asignando valores a una columna basada en otra columnaAquí hay un pequeño script que armé, no es posible que desee un selector opcional para hacer que la nueva columna sea numérica (aquí solo la dejo como carácter).
Debe ingresar un nuevo nombre de columna y hay una verificación para que no se ejecute si el nuevo nombre existe en la tabla de datos actualmente (sé que JMP no sobrescribirá una columna, pero aún puede ser confuso).
/* recode */
self = New Namespace();
Show( self << Get Name );
self:table = Current Data Table();
self:column = Insert( {}, self:table << Get Selected Columns );
self:column = self:column[1] << Get Name;
Show( self:column );
self:values = Associative Array( Column( self:table, self:column ) ) << Get Keys;
self:string list = {};
For( i = 1, i <= N Items( self:values ), i++,
Insert Into( self:string list, Char( i ) )
);
Eval( Eval Expr(
win = New Window( "Set Values",
<<MODAL></MODAL>Re: Cómo hacer un script JMP para crear una nueva ventana para la entrada del usuario asignando valores a una columna basada en otra columna¿Has considerado el Cols> Recodificar ¿plataforma?Podría ser una buena forma de hacer lo que quieras con poca tecnología.
Re: Cómo hacer un script JMP para crear una nueva ventana para la entrada del usuario asignando valores a una columna basada en otra columnaSeguro, eso es algo que pensé en hacer antes de quedarme estancado. Pero quiero tener una aplicación para personas que no conocen muy bien la interfaz JMP.