JSL- Suma: cantidad ordenada por filas con la misma cadena en: ciudad<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos,
Soy nuevo en las secuencias de comandos y estoy totalmente perdido tratando de encontrar tutoriales informativos sobre JSL. Realmente apreciaré cualquier ayuda con mi problema.
Básicamente, necesito clasificar por: Ciudad y resumir el valor en cada artículo: Cantidad y luego mostrarlo. El problema es que necesito armar dinámicamente una lista de todas las cadenas diferentes en: Ciudad y luego resumir todos los valores numéricos en: Cantidad para esas filas que tienen cadenas coincidentes en la columna: Ciudad.
Así, por ejemplo, la tabla se vería así.
tableEx =
| Ciudad | Cantidad |
|---|
| a1 | 100 |
| a2 | 10 |
| a9 | 29 |
| a1 | 99 |
| a4 | 20 |
| a7 | 91 |
| a2 | 60 |
| a100 | 33 |
| a500 | 30 |
| a100 | 14 |
| a99 | 2000 |
| etc ... | etc ... |
La siguiente parte no necesita ser leída para resolver mi problema, solo detalla cómo deseo resolver el problema en mi mente. Desearía poder hacer algo como esto;
List_Of_CityNames = new List ();
interruptor = falso;
Foreach Row r en tableEx
{
Foreach String city en List_Of_CityNames
{
if (r.Get (Ciudad) == ciudad)
switch = true; // significa que la entrada de esta fila: Ciudad ya está en la lista, por lo que no necesitamos agregarla.
}
if (switch == false) // si esta fila: Ciudad aún no se ha incluido en la lista, entonces esto se ejecuta
{
List_Of_CityNames.Add (r.Get (Ciudad)); // ciudad agregada a la lista
}
interruptor = falso; // cambiar restablecer a Ciudad que no se encuentra en la lista todavía
}
Si esto hubiera funcionado, habría hecho la lista de tuplas y habría sido un par string + int para que me permitiera resumir la cantidad de ciudades coincidentes también en el bucle anterior. Luego lo imprimiría haciendo una Nueva tabla () si pudiera.
Después de recopilar la información anterior, necesitaría imprimirla. ¿Alguien sabría cómo crear una tabla basada en el tamaño dinámico de la lista que puede o no formar parte de la primera solución?
dtSolution = Nueva tabla ("Solución",
Agregar fila (/ * valor numérico que representa el número de nombres de ciudades diferentes * /),
Nueva columna ("/ * primera ciudad en la lista * /", "Continua", Valores establecidos (lista (/ variable que representa la suma: Cantidad para las mismas ciudades * /)))
Nueva columna ("/ * segunda ciudad en la lista * /", "Continua", Valores establecidos (lista (/ variable que representa la suma: Cantidad para las mismas ciudades * /)))
Nueva columna ("/ * tercera ciudad en la lista * /", "Continua", Valores establecidos (lista (/ variable que representa la suma: Cantidad para las mismas ciudades * /)))
Nueva columna ("/ * cuarta ciudad en la lista * /", "Continua", Valores establecidos (lista (/ variable que representa la suma: Cantidad para las mismas ciudades * /)))
Nueva columna ("/ * quinta ciudad en la lista * /", "Continua", Valores establecidos (lista (/ variable que representa la suma: Cantidad para las mismas ciudades * /)))
Nueva columna ("/ * sexta ciudad en la lista * /", "Continua", Valores establecidos (lista (/ variable que representa la suma: Cantidad para las mismas ciudades * /)))
etc hasta que se haya agregado cada ciudad a la tabla // Después de crear la nueva tabla, probablemente tendría que usar un bucle foreach para agregar cada fila una por una a la tabla basada en la lista que se creó en pt.1
);
Realmente aprecio cualquier ayuda que pueda obtener. También te agradezco si terminaste leyendo todo eso.
Gracias,
Loysius
Re: JSL- Suma: cantidad ordenada por filas con la misma cadena en: ciudadLoysius,
Debería haber mencionado que Tabulate aparece en el menú Tablas en JMP 10. Se movió al menú Analizar comenzando con JMP 11.
-Miguel
Re: JSL- Suma: cantidad ordenada por filas con la misma cadena en: ciudadEl pequeño triángulo rojo en la ventana tabular le permite guardar la tabulación como una tabla de datos.
Usando la solución de Michael, después de crear la tabulación deseada, haga clic en el triángulo rojo y seleccione "Convertir en tabla de datos". Esto esencialmente imita lo que hice en JSL.
Re: JSL- Suma: cantidad ordenada por filas con la misma cadena en: ciudadGracias Michael y PMroz!
Encontré Tabular en el menú Tablas, pero muchas gracias por sus comentarios. No sabía que era posible copiar la versión de tablas JSL en el portapapeles y pegarlas en mi script.
Lamentablemente, no copian el pegado de manera que se puedan utilizar directamente, aún deben modificarse antes de que funcionen. En cuyo caso, la solución de PMroz muestra la sintaxis para que todo funcione correctamente.
Sinceramente,
Loysius
Re: JSL- Suma: cantidad ordenada por filas con la misma cadena en: ciudadAquí está como un programa JSL:
// Crear una tabla de ejemplo
dt = Nueva mesa ( "CityQty" , Añadir filas ( 11 ) ,
Nueva Columna ( "Ciudad" , Personaje , Nominal ,
Establecer valores ( { "a1" , "a2" , "a9" , "a1" , "a4" , "a7" , "a2" , "a100" , "a500" , "a100" , "a99" } ) ) ,
Nueva Columna ( "Cantidad" , Numérico , Continuo , Formato ( "Mejor" , 12 ) ,
Establecer valores ( El 100 , 10 , 29 , 99 , 20 , 91 , 60 , 33 , 30 , 14 , 2000 ] ) )
) ;
// Hacer una tabulación invisible
dtab = dt << Tabular (
Mostrar panel de control ( 0 ) ,
Añadir tabla (
Tabla de columnas ( Columnas de análisis ( : Cantidad ) ) ,
Tabla de filas ( Agrupando Columnas ( : Ciudad ) )
) , invisible ,
) ;
// Convertir la tabulación en una tabla
dt_new = dtab << Hacer en la tabla de datos ;
// Eliminar la tabulación
dtab << Cerrar ventana ;
Re: JSL- Suma: cantidad ordenada por filas con la misma cadena en: ciudadSi tiene las columnas Ciudad y Cantidad en una tabla de datos, probablemente podría usar Tabular (en el menú Analizar).
Ve a Analizar> Tabular.
Arrastre Ciudad a "Eliminar zona para filas".
Arrastre Qty al encabezado donde ahora dice "N".
Haga clic en Listo.
Creo que esto debería darle una lista ordenada de ciudades con sus correspondientes sumas de Cantidades.
Para reproducir esto más tarde a través de un script, puede usar el menú del triángulo rojo en Tabulate para ir a script> Save Script to Script Window (o guardar en otras ubicaciones, incluida la propia tabla de datos original).
Espero que ayude,
Miguel