creando fórmula usando nombres de columna existentesNames Default To Here( 1 );
dt = Current Data Table();
numcol=dt << Get Column Names(Numeric);
charcol=dt << Get Column Names( Character);
For( k = 1, k <= N Items( numcol ), k++,
colname=column(numcol[k]) <<GET name=""></GET>
Hola usuarios de JMP,
Tengo una tabla de datos que necesito para hacer algunas conversiones en columnas numéricas según criterios predefinidos.
Recibo el error "La expresión no se ajusta a los tipos de columna disponibles en la fila 1 en el acceso o la evaluación de 'Argumento incorrecto'".
¿Alguna idea sobre cómo resolver esto? ¡Apreciado!
secuencias de comandosRe: crear fórmulas usando nombres de columnas existentesTienes 2 problemas aquí.
- Cuando se presenta una fórmula en una nueva columna, no se procesa antes de agregarse como fórmula.Por lo tanto, cuando se especifica
:Column(dt, colname)
JMP no lo cambia al nombre de la primera columna numérica, luego al segundo, etc.El autor de JSL debe usar código que expandirá la referencia en la declaración JSL completa/terminada antes de pasarla al elemento Format.
- Los nombres de las columnas en su tabla de datos, es decir, 1, 2, 3, 4, etc., causarán problemas en la interpretación de JMP, a menos que indique específicamente que deben interpretarse como nombres de columnas.Por lo tanto, debe usar la estructura :"nombre de columna"n
A continuación se muestra una reelaboración de su código que produce las nuevas columnas que desea
Names Default To Here( 1 );
dt = Current Data Table();
numcol = dt << Get Column Names( Numeric );
charcol = dt << Get Column Names( Character );
For( k = 1, k <= N Items( numcol ), k++,
colname = Column( numcol[k] ) << Get Name;
Eval(
Substitute(
Expr(
dt << New Column( "site" || numcol[k],
formula(
If(
:ID == "item5", (__colname__ * 0.5) / 20,
:ID == "item8", (__colname__ * 0.8) / 20,
__colname__
)
)
)
),
Expr( __colname__ ), Parse( ":\!"" || colname || "\!"n")
)
);
);Re: crear fórmulas usando nombres de columnas existentes¡Gracias, Jim, funciona!