Quiero usar un valor en una columna numérica para crear una referencia al mismo número de columna.Generé una columna con enteros que ahora quiero usar para referenciar valores en columnas del mismo número. La columna 9 contiene el número que indica a qué columna debe hacer referencia una fórmula en la columna 10. A continuación, se muestran varios problemas.



Automatización y scriptingRe: Quiero usar un valor en una columna numérica para crear una referencia al mismo número de columna¿Qué mensaje de error se muestra cuando pasas el cursor sobre el código subrayado en rojo?
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "Column 9",
Numeric,
Set Values( [1, 2, 3, 4, 5] )
);
New Column( "Column 10",
Expression,
Formula( Try( Column( :Column 9 ) ) )
)
no error:


Si no desea recuperar las columnas, sino el valor almacenado en las columnas, utilice Como columna() en lugar de columna():
referencia de columna robusta
... o agregue un índice de fila a Column():
Columna(col)[fila()] o Columna(col)[]
New Column( "Column 10b",
Character,
Formula( Try( Char( Column( :Column 9 )[Row()] ) ) )
)

Aparte de eso,
- Asegúrese de que el valor calculado coincida con el tipo de modelado de la columna.
Las columnas 1 a 5 contienen números y caracteres. Por eso agregué Carbonizarse().
- La función Column(.) fallará y la fórmula de la columna finalizará. Por lo tanto, verifique si faltan índices en la Columna 9.
Re: Quiero usar un valor en una columna numérica para crear una referencia al mismo número de columnahogi
Gracias, pero esos solo me dan el valor que ya está en la Columna 9, quiero buscar el valor de una columna diferente como se enumera en la Columna 9, ¿si eso tiene sentido?
Re: Quiero usar un valor en una columna numérica para crear una referencia al mismo número de columnaCombinando ambos enfoques, recuperemos las columnas en el primer paso y los valores en el segundo paso:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "column",
Expression,
Formula( Try( Column( Row() ), . ) ),
);
New Column( "value",
Character,
Formula( Try( Char( :column[Row()][Row()] ), "" ) ),
)
why :column[Row()][Row()]?
:columna es la columna #9,
:columna[fila()] es la entrada en la fila específica de esta columna , por ejemplo Columna ("sexo")
y :columna[fila()][fila()] es la entrada en la fila específica de, por ejemplo, la columna ("sexo")

Re: Quiero usar un valor en una columna numérica para crear una referencia al mismo número de columnahogi
¡Excelente adición! Sin buenas acciones ni nada de eso...
Ahora necesito operar iterativamente en cada columna en relación con el valor máximo almacenado en la Columna 9. La suma normal del valor de i no se aplica naturalmente en este caso.
clear symbols();
lim = Col Max(Column(8));
For (i=1, i<=lim, i++,
New Column( "Column 10b",
Character,
Formula( Try( Char( Column( :Column 9 )[Row()] ) ) )
));
Re: Quiero usar un valor en una columna numérica para crear una referencia al mismo número de columna
@SpannerHead escribió:
La suma normal del valor de i no se aplica naturalmente en este caso.
Un problema muy común:
una variable definida fuera del mensaje de la nueva columna y utilizada dentro del mensaje de la nueva columna :
-> Manejo de expresiones en JMP: consejos y trampas
La solución: buscar la variable y utilizar el valor almacenado:
For each ({i}, 1::5,
Eval(Eval Expr(New Column( "col_"||char(i),
Character,
Formula( Try( Char( Column( Expr(i) )[Row()] ) ) )
))));
más robusto:
For each ({i}, 1::5,
Eval(Eval Expr(New Column( "col_"||char(i),
Character,
Formula( Try( Char( Expr(Name Expr(As Column( i )) )) ) )
))));
Desde el primer día que lo vi en una de las publicaciones de @jthi , admiré el Name Expr(As Column(col)) y lo usé dondequiera que pude.
Con el aprendizaje de https://community.jmp.com/t5/Discussions/Using-numeric-objects-in-a-column-equation/mp/903966/highlight/true#M106273 , estoy realmente feliz de que este enfoque me haya ayudado a evitar muchos obstáculos.
¿Como Columna(col) o Columna(col) en una fórmula de columna? ¡Demasiado frágil!