¿Cómo puedo recorrer los nombres de las columnas en una declaración for?Hola, estoy intentando crear una nueva columna de fórmula que recorrerá las columnas anteriores. Las columnas anteriores están en dos grupos, cada grupo tiene nombres de columna que comienzan con una de dos cadenas.Luego, estos encabezados de columna terminan en números enteros, 0, 1, 2,... hasta 22. Consulte la captura de pantalla en PDF adjunta de mi código y avíseme por qué no funciona.Al no haber usado JMP antes de ayer, supongo que puedo estar usando "i" o "%i" incorrectamente en los nombres de las columnas dentro de la declaración IF.
¡Gracias de antemano!
Re: ¿Cómo puedo recorrer los nombres de las columnas en una declaración for?Liz_s, sí, estos se refieren a números de columna.
En el menú principal de JMP, seleccione Ayuda > Libros > Guía de secuencias de comandos y vaya a la página 439 (o cerca). Esta es una sección del capítulo 9. Tablas de datos , sección 1, Trabajar con objetos de tabla de datos , tema Acceder a valores de datos . Lea esa sección completa para conocer métodos alternativos para acceder y asignar valores de datos.
Comentario: La clave de su tarea fue encontrar qué columna de decisión contenía "Matriculado" para cada fila. Hacer bucles más de 22 veces para cada fila es mucho anidamiento. La clave aquí para obtener más información es utilizar Ayuda > Índice de secuencias de comandos > Funciones para obtener información sobre Contiene.
Contiene (lista | cadena, cadena coincidente) devuelve la primera posición donde se encuentra. Nota: Loc() devuelve todas las posiciones en una lista o matriz donde se encuentra el valor coincidente. Comprender que dt[fila, c1::cn] donde las columnas c1 a cn son caracteres devolverá una lista de los valores de la tabla.Contiene() encontrará la posición (k), por lo que esta será la posición correcta para la columna de organización.
La clave es "conocer tus herramientas", cómo acceder, asignar y conocer tus funciones.
Buena suerte con tu viaje aprendiendo JMP.
Re: ¿Cómo puedo recorrer los nombres de las columnas en una declaración for?Hola,
Este script funcionó perfectamente y gracias por ayudarme con mi falta de familiaridad con el editor de fórmulas JMP.Este código elegante era más lo que tenía en mente cuando comencé a intentar escribir mi bucle.Sólo una última pregunta: ¿podría explicar su selección de los números 6 y 10 en la declaración del Índice?
Supongo que los números de índice 6 y 10 se debieron a que había 5 de cada uno de los dos tipos de columnas en su archivo de prueba y 10 columnas en total.Entonces, ¿6 comienza el conjunto de columnas de decisión y 10 finaliza las columnas de decisión?(Decidí evitar adivinar y simplemente preguntarte).
¡Sentirse agradecido!
Liz_S
Re: ¿Cómo puedo recorrer los nombres de las columnas en una declaración for?Aquí está la fórmula que funciona para la tabla de datos de matrícula, esto es solo texto JSL.
k = Contains( Current Data Table()[Row(), Index( 6, 10 )], "Matriculated" );
If( k > 0,
Column( "designation_organization_" || Char( k ) )[Row()],
"None"
);
Re: ¿Cómo puedo recorrer los nombres de las columnas en una declaración for?Lo primero que intenté fue copiar y pegar la fórmula del cuadro azul en una nueva ventana de secuencia de comandos de columna. No se pega; es como si la información en el cuadro azul de su solución fuera una imagen o una captura de pantalla.
Sí, sé cómo hacer doble clic en un cuadro de fórmula para poder escribir un script. Todavía no veo cómo agregar índices de filas y columnas a una declaración Contain. Pero gracias de nuevo por las partes anteriores de su respuesta.Re: ¿Cómo puedo recorrer los nombres de las columnas en una declaración for?A veces, poner una fórmula de varias declaraciones es doloroso y es mejor escribirla.
Cuando haces doble clic en la fórmula, se abre una ventana de secuencia de comandos.Esto podría requerir un poco de práctica. Tal vez copie la fórmula que usa los números de columna y péguela en el cuadro azul, luego haga doble clic para abrir el editor de secuencias de comandos.
Espero que eso ayude.
Re: ¿Cómo puedo recorrer los nombres de las columnas en una declaración for?Hola gzmorgan0,
¡El primer guión que escribiste para la tabla que adjuntaste hace lo que me gustaría y es brillante!Podré terminar mi proyecto en el trabajo hoy.¡Gracias!Sin embargo, dado que este es el día 3 para mí en JMP, me gustaría entender cómo escribir la última opción que escribiste usando el editor de fórmulas en JMP.Cuando intenté crear la nueva columna en su tabla después de ejecutar el primer script, encontré dos problemas:
1.) No pude usar dos funciones independientes en el editor de fórmulas de columna en dos declaraciones separadas. Empecé con el Contiene función y agregó un ";" después de.Pero luego, cuando hice clic en el Si función, incrustó la declaración Contiene automáticamente.Extraño.no quiero Contiene incrustado dentro de Si o viceversa.
2.) No vi cómo agregar la fila() y el índice(6,10) al Contiene ( Tabla de datos actuales (),...La opción ^ me dio una nueva "parte" separada por comas: Contiene( Tabla de datos actuales() , parte , "Matriculado").¿Cómo insertaste las opciones de filas/columnas en tu Contiene ¿Funciona en el editor de fórmulas?
Revisé los tutoriales del kit de bienvenida, pero no vi suficiente información sobre secuencias de comandos y uso del editor de fórmulas en una nueva columna.¿Conoce algún vídeo de Youtube que pueda recomendar para principiantes?Pero también agradecería otra respuesta tuya si tienes tiempo.
¡Muchas gracias!
Re: ¿Cómo puedo recorrer los nombres de las columnas en una declaración for?Existen varios métodos para lograr lo que creo que necesitas. En primer lugar, debe comprender la sintaxis JMP para hacer referencia a columnas.Por ejemplo, si desea crear una nueva columna que elija aleatoriamente las organizaciones 1 a 5, aquí estaría la fórmula de la columna.
i = Random Integer(1,5);
Column( "designation_organization_" || Char( i ) )[Row()];
|| es el operador de concatenación, Char(i) es la cadena. Luego, los corchetes representan la fila de la columna especificada.
He adjuntado una tabla. No tengo idea de cómo se ve tu tabla, pero tal vez este script te ayude.
Abra la tabla adjunta.Luego ejecuta este script
dt=data table("matriculation");
cnmes = dt << get column names("string");
dcols = {}; //create a list of decision columns
for(i=1, i<=nitems(cnmes), i++,
if( contains(cnmes[i], "_decision_"), Insert into(dcols, cnmes[i]) )
);
//create a new column
matcol = dt << New Column("Major", Character);
//rowwise
for(i=1, i <= nrow(dt) , i++,
k = Contains(dt[i,dcols], "Matriculated"); <BR /> //dt[ i, dcols] is a list of values in the decision columns from row i<BR /> //contains returns the position in the list for "Matriculated"
matcol[i] = if(k>0, Column("designation_organization_" || char(k))[i], "None" );<BR /> //if k > 0, "Matriculated" was found, so assign to matcol the organization for the corresponding k
);Tenga en cuenta que JMP permite utilizar números de columna. Aquí hay un script, para una nueva columna de la tabla adjunta, que usa números de columna.

Re: ¿Cómo puedo recorrer los nombres de las columnas en una declaración for?Su PDF es difícil de leer.¿Sólo uno de los 22 columnas estará "Matriculado"? ¿O serán varios y quieres todos los códigos de organización?