Cree y complete nuevas categorías basadas en columnas en una columna existenteHola,
Estoy tratando de crear una consulta rápida en la que se usa una columna categórica (test_article) para crear una serie de columnas que contienen solo un subconjunto de la información. Si el script funciona según lo previsto, la tabla terminaría con 2 columnas nuevas (PBS vs...).
| artículo de prueba | medición | PBS frente a 709547 | PBS frente a 709139 |
| PBS | 1.23 | PBS | PBS |
| PBS | 1.456 | PBS | PBS |
| 709547 | 4.56 | 709547 | EXCLUIR |
709139 | 5.02 | EXCLUIR | 709139 |
| 709139 | 6.02 | EXCLUIR | 709139 |
| 709547 | 4.57 | 709547 | EXCLUIR |
He probado el siguiente script:
NamesDefaultToHere(1);
dt=current data table();
row = Associative Array( :test_article ) << Get Keys;
nc=N items (row);
For( i = 1, i <= nc, i++,
new column("PBS vs "|| row[i],"Character", "Nominal", Formula(If( :test_article == "PBS", :test_article,
If( :test_article == row[i],
"test",
"EXCLUDE"
)
))));De alguna manera, no completa ningún valor en las nuevas columnas con la excepción de 'PBS'.
¿Alguna sugerencia?
Muchas gracias
Sebastián
Re: Crear y rellenar nuevas categorías basadas en columnas en una columna existenteTambién funciona como un encanto.
Muchas graciasRe: Crear y rellenar nuevas categorías basadas en columnas en una columna existente¡Funciona de maravilla!
GraciasRe: Crear y rellenar nuevas categorías basadas en columnas en una columna existenteDebe obtener el valor de la fila [i] en la fórmula. JMP no evalúa expresiones dentro de la parte Formula() del mensaje New Column().
Puedes usar Sustituto() para obtener el valor real de la fila [i] en la fórmula.
Names Default To Here( 1 );
dt = Current Data Table();
row = Associative Array( :test_article ) << Get Keys;
nc = N Items( row );
For( i = 1, i <= nc, i++,
Eval(
Substitute(
Expr(
New Column( "PBS vs " || row[i],
"Character",
"Nominal",
Formula( If( :test_article == "PBS" | :test_article == ri, :test_article, "EXCLUDE" ) )
)
),
Expr( ri ), Eval( row[i] )
)
)
);
Re: Crear y rellenar nuevas categorías basadas en columnas en una columna existenteEl problema principal que tiene es que dentro de la definición de una fórmula, uno no puede tener elementos que deban evaluarse.JMP piensa que todo dentro de la definición de la fórmula debe evaluarse solo cuando se ejecuta la fórmula.
Por lo tanto, la fórmula que se pasa a la definición de Nueva columna debe estar completa en su sintaxis.La modificación de su código a continuación funciona con su tabla de datos de muestra.
Names Default To Here( 1 );
dt = Current Data Table();
row = Associative Array( :test_article ) << Get Keys;
nc = N Items( row );
For( i = 1, i <= nc, i++,
Eval(
Parse(
"New Column( \!"PBS vs " || row[i] ||
"\!",
Character,
Nominal,
Formula(
if (Row() == 1, theTest = \!""
|| row[i] ||
"\!");
If( :test_article == \!"PBS\!",
zip=:test_article,
If( :test_article == theTest,
zip=\!"test\!",
zip=\!"EXCLUDE\!"
)
);
zip
)
)
);"
)
)
);
