¿Es posible crear una matriz asociativa como una variable de tabla y luego utilizar valores almacenados en una fórmula de columna ?
Tengo varias variables relacionadas que me gustaría editar como parte de un análisis en curso. Estas variables se usarán posteriormente como una función de coincidencia en una fórmula de columna.
Por ejemplo:
- Cree una tabla de variables cuenta y establezca el valor en ["a" => 10, "b" => 3, "c" => 1] .
- Cuenta se referencia entonces mediante una fórmula de columna, como :cuenta[:col] . Donde :columna es una columna de caracteres con valores "a", "b" o "c".
¿Es posible? Estoy usando JMP 18.2.1.
Creo que esto hace lo que preguntaste:
New Table( "Untitled",
Add Rows( 3 ),
New Table Variable( "abc", "[\!"a\!"=>1, \!"b\!"=>2, \!"c\!"=>4]" ),
New Column( "Column 1",
Numeric,
"Nominal",
Format( "Best", 9 ),
Formula(
c_abc = As Constant( Eval( Parse( :abc ) ) );
c_abc["c"];
),
Set Selected
)
)
Tenga en cuenta que la variable de tabla es solo texto, por lo que se analiza y evalúa. La función AsConstant solo analiza y evalúa una vez para la evaluación de toda la columna, por lo que no será demasiado ineficiente.
Como alternativa, podría tener una variable de tabla independiente para cada elemento del array asociativo. Podría ser más fácil de editar, pero no creará un espacio de nombres aislado como el array asociativo.
Otra alternativa es usar propiedades de columna personalizadas si los nombres van a ser nombres de columna. Podrían ser más difíciles de encontrar y editar. A diferencia de la variable de tabla de solo texto, también contienen expresiones:
dt=New Table( "Untitled",
New Column( "Column 1",
Set Property( "xxxxx", ["a"=>42,"adfasdfasdf"=>77] )
)
);
(dt:column1<
<GETPROPERTY></GETPROPERTY>
<BR />
Craige ofreció buenas opciones para esto. Aquí hay una lista de deseos: esperamos tipos de datos más complejos para las variables de tabla. Usemos tipos de datos más complejos para las variables de tabla que no sean solo texto y números.
Gracias @Craige_Hales , tu solución funciona muy bien.
Gracias @jthi , voté a favor de esta sugerencia.