¿Mala división?Supongamos que tengo esta tabla:
| Categoría |
Artículo |
Nivel |
| A |
1 |
delta |
| A |
2 |
fox |
| A |
3 |
hotel |
| B |
1 |
Julieta |
| B |
3 |
cinco |
Tenga en cuenta que falta Categoría=B, Artículo=2.
Si intento "dividir" esta tabla con "Dividir por" = Categoría y "Dividir columnas" = Nivel, y "Conservar todo", devuelve esto:
| Artículo |
A |
B |
| 1 |
delta |
Julieta |
| 2 |
fox |
cinco |
| 3 |
hotel |
|
Tenga en cuenta que en la tabla recién dividida, se muestra que Item=2,Category=B es "lima", pero eso es incorrecto: esa celda debería estar en blanco y "lima" debería estar debajo de Item=3,Category=B.
¿Es un error de usuario o se trata de un error en JMP?
Combinación y limpieza de datosRe: ¿Mal apilamiento?Hola @BHarris , prueba a usar el elemento en el grupo. El resultado será el esperado.
Mejor,
Re: ¿Mal apilamiento?Sí, eso parece funcionar.
¿Puedes explicarme qué está pasando? Me gustaría entender por qué fue necesario el paso del Grupo.
Re: ¿Mal apilamiento?Claro, dividir sin el grupo se hace literalmente por fila, sin tener en cuenta que al elemento le falta un componente para la categoría. El grupo obliga a los niveles a separar por elemento para cada categoría, analizando primero el elemento y luego la categoría.
Desde la ayuda en línea ( https://www.jmp.com/support/help/en/18.2/?os=mac&source=application#page/jmp/split-columns-in-data-tables.shtml
Grupo
Especifica una variable de grupo cuando desea que los datos se dividan dentro de cada grupo de la variable seleccionada. Cada grupo genera una fila en la tabla de resultados. También debe especificar las variables requeridas: Dividir por y Dividir columnas.
Nota: Si la variable que desea agrupar contiene grupos desiguales o está en un orden aleatorio, especificarla como variable Grupo garantiza que sus datos se reestructuren correctamente y que los valores faltantes se asignen en los lugares apropiados.
De lo contrario, tendría que agregar una fila adicional y definir Categoría y Artículo, pero dejar Nivel en blanco para esa fila.
Espero que ayude.
Re: ¿Mal apilamiento?Cuanto más lo pienso, menos sentido tiene. No entiendo por qué la división se comportaría así en ninguna circunstancia; es casi como si los desarrolladores simplemente hubieran anidado algunos bucles y esperaran que los datos se ubicaran correctamente...
Me pregunto si (a) todavía soy demasiado tonto para entender la razón subyacente de este comportamiento, (b) esto se implementó de esta manera para ofrecer un alto rendimiento (divisiones rápidas en tablas grandes) donde las entradas son completamente factoriales y se espera que el usuario sepa que se está haciendo esa suposición, o (c) es realmente solo un error que necesita ser enviado/arreglado.
(No me ofenderé si es (a).;) )
Re: ¿Mal apilamiento?¿Nos puedes explicar tus pensamientos con más detalle?
Yo diría lo contrario:
Si los datos de entrada están bien estructurados, puedes dividirlos sin tener que preocuparte por ello.
Si los datos de entrada no están bien estructurados, pero tienen alguna información de agrupación además, siempre existe la posibilidad de usar esta información de agrupación para indicarle a JMP lo que debe hacer.
Lo que no funciona:
El usuario conoce la información de agrupación (existe la columna) pero no se lo dice a JMP (a través de la GUI).
No es de extrañar entonces que JMP no utilice la información de agrupación.
[Hay otros casos en los que JMP aplica algunas conjeturas | corrección automática - y el usuario se pregunta sobre la creatividad].
Re: ¿Mal apilamiento?¿Cuál es tu opinión sobre el conjunto de datos proporcionado en la pregunta original? ¿Está bien estructurado?
¿Y cuál es tu opinión sobre el comportamiento actual de JMP al dividir esa tabla?
Entiendo que las columnas "Dividir por" son aquellas con valores que se desea que aparezcan en los encabezados de columna de la nueva tabla, y las columnas "Dividir columnas" son las columnas cuyos valores se desea que aparezcan en las celdas de esas nuevas columnas. Sigo sin entender qué significa "agrupar" en este contexto.
Re: ¿Mal apilamiento?Su tabla de datos inicial está "bien estructurada".
El concepto de agrupación se puede considerar en términos de qué filas de la tabla de datos de entrada se deben agrupar para definir una fila de salida específica.
Re: ¿Mal apilamiento?Otra forma de explicarlo:
Sus columnas "Categoría" y "Nivel" (solas) no están bien estructuradas; se necesita información adicional como
@BHarris escribió: Tenga en cuenta que falta Categoría=B, Artículo=2.
Para informar a otros sobre el hecho: entre la fila # 5 y la fila # 6 falta algo.
Caso #1:
El usuario no le informa a JMP sobre la existencia de la columna "Elemento" ("Elemento" no se utiliza en la GUI **)
Entonces JMP no tiene suficientes conocimientos para hacer el trabajo correctamente.
Caso #2:
Hay una tercera zona de caída. Permite al usuario usar
@BHarris escribió: Tenga en cuenta que falta Categoría=B, Artículo=2.
de forma estructurada - como una columna de agrupación .
"Agrupar" se ajusta muy bien a lo que buscas:
Proporcionar a JMP información adicional para que las entradas puedan colocarse en filas específicas, determinadas no por el Rango(fila(), Categorías) de los datos de entrada, sino agrupadas a través de columnas de agrupación.
**) editar:
"Elemento" se utiliza en la GUI, implícitamente a través de Mantener todo
pero esto es demasiado "pasivo" - ver más abajo.
Re: ¿Mal apilamiento?@hogi - has dejado algo suelto aquí, la idea de que no estaba incluyendo la columna Elemento en ningún lugar de la interfaz y por lo tanto hay una implicación de que tal vez el algoritmo Split ni siquiera es realmente consciente de su existencia.
Creo que creía que *todas* las columnas eran importantes en la operación de división, y que intentaba mantener todas las relaciones siempre que fuera posible; por ejemplo, que "lima" también se asociaba solo con el elemento "3". Ahora me pregunto si todas las demás columnas deberían ser columnas de agrupación si utilizo "Conservar todo"...
Algún día espero alcanzar el estatus de JMP-Master y estar completamente informado, y quizás entonces entienda por qué JMP no usa implícitamente todas las demás columnas "Conservadas" en la función de Grupo. Hasta entonces, probablemente seguirá poniéndome nervioso, ya que su comportamiento en estas condiciones no es obvio, genera datos de salida erróneos en circunstancias difíciles de identificar y no está lo suficientemente documentado como para que lo entienda. Al menos ese nerviosismo me mantendrá más alerta en el futuro al usarlo.
Gracias.
Re: ¿Mal apilamiento?Lo mencionaste, pero quizás ayude escribirlo explícitamente:
JMP aplica la regla:
- Grupo : Conservar y utilizar para agrupar
- Mantener : mantener (~ no dejar caer)
@BHarris escribió:
Ahora me queda intentar averiguar si todas las demás columnas deberían ser columnas de agrupación si estoy haciendo "Conservar todo"...
Supongo que sí.
Podrías probar ambos métodos, comprobar las diferencias y luego decidir.
El grupo ayuda a estructurar los datos. Si los datos ya están estructurados, no hay problema. Si no lo están, garantiza un resultado significativo.
Con Keep, necesitas saber con mucha precisión lo que haces. A continuación, se muestran algunos ejemplos.
Estas pequeñas discusiones en la comunidad ayudan mucho a comprender, desafiar y pulir el conocimiento del usuario.
Aquí tienes una colección de preguntas divertidas para principiantes de JMP que surgieron en nuestras sesiones de coaching. Las he recopilado para ayudar a otros usuarios a comprender JMP. Muchas de las preguntas son pura retórica: ilustran que a veces es la jerga de JMP la que dificulta comprender la lógica de JMP.
@BHarris escribió:
Hasta entonces, probablemente seguirá poniéndome nervioso, ya que su comportamiento en estas condiciones no es evidente, genera datos de salida erróneos en condiciones difíciles de identificar y no está lo suficientemente documentado como para que lo entienda. Al menos, ese nerviosismo me mantendrá más alerta al usarlo en el futuro.
Estoy de acuerdo. Es muy importante saber qué hace JMP y conocerlo con el nivel de detalle necesario para que el usuario se sienta capaz de hacer lo correcto. Sin nervios ni sorpresas. Si ocurre algo inesperado, el usuario empieza a sentirse ansioso. ¿Dónde están los otros lugares donde JMP hace algo inesperado ?
Tal vez haya una característica fantástica en JMP, pero molesta o asusta a los usuarios; al menos a aquellos que no esperan lo que hace JMP...
Tener un mapa de estas trampillas puede ayudar a los usuarios a escapar de ellas. Todo usuario de JMP debería tener un mapa así para sentirse seguro al trabajar con JMP.
Aunque los detalles están bien documentados (JMP es muy potente), ¡al mismo tiempo hay muy poca y demasiada documentación!
Esto dificulta encontrar la información correcta. LearnBot lo facilita mucho ahora, pero aún no conoce todos los detalles.
Re: ¿Mal apilamiento?Un caso extremo de Split con Mantener sin Agrupación

Mantener : nombre (el nombre no se utiliza para agrupar)
A medida que se fusionan 2 filas en una sola, se pierden muchos "nombres".
El primer elemento *) gana, por lo que comenzamos con nombres de mujer y se descartan todos los nombres de hombre.
¿Todos nombres masculinos? No, al final quedan algunos estudiantes varones.
*) NO existe una regla universal para todas las plataformas de tablas: qué valor se conservará y cuál se perderá.
Join también conserva el primer valor (y no le importan los valores posteriores).
La actualización intenta conservar todos los valores y el último se "mantiene": es por eso que Tables/Update es tan lento (puede tomar horas ejecutar el comando): Acelerar Tables/Update
Re: ¿Mal apilamiento?
@hogi escribió:
El primer artículo *) gana
Ups... esto sólo es cierto para las columnas agregadas mediante Mantener .
Para las columnas divididas , Dividir se comporta como Actualizar: la última "se mantiene".
Intenté ilustrarlo con este ejemplo, donde marqué las entradas de "nombre" y las entradas de división M/F que aparecen en el conjunto de datos final. Se puede ver:
- columnas agregadas a través de Mantener (como el nombre): Rango=1 (toma la primera, omite las siguientes)
- filas agregadas mediante Dividir columnas (altura --> M/F): RankReverse=1 (la última "se mantiene")

Re: ¿Mal apilamiento?El comportamiento sigue una lógica, pero se puede discutir si la lógica es sencilla o esperada por todos los usuarios 
Me pregunto si "Mantener todo" es la opción predeterminada. Si JMP empieza con...

... entonces un usuario que activa la opción Mantener todo puede consultar la documentación para estar seguro de que hace lo que quiere.
JMP incluso podría mostrar una advertencia: "¿Estás seguro de que deseas utilizar Keep? ¿Es mejor utilizar Group?"
Bajo la línea: Sin sorpresas | ansiedad para los usuarios que no utilizan la opción.
Mucho más peligroso que Split: Tablas /Actualizar
La interfaz predeterminada también comienza con "Todos".
a) para agregar columnas
b) para Reemplazar columnas (!)
Hace algunos años, consideré que era bastante peligroso escribir un complemento que reemplazara las configuraciones predeterminadas con:

El beneficio adicional: con este cambio la plataforma no comienza con una configuración que intenta actualizar miles de columnas.
Esto lo hace órdenes de magnitud más rápido que el original : )
https://community.jmp.com/t5/JMP-Wish-List/Acelerar-la-Actualización-de-Tablas/idc-p/653334/highlight/true#M4531
Re: ¿Mal apilamiento?Agregué el tema a Precaución: Lugares donde Jmp hace algo inesperado

Re: ¿Mal apilamiento?Me encantaría ver algún día una animación que muestre lo que hacen las divisiones (y la pila). Imagino que los valores de las columnas divididas se desplazan hacia arriba, a los encabezados de columna, y que las columnas divididas se desplazan hacia las celdas de esas nuevas columnas. (Me sorprendió descubrir que, si hay varias columnas divididas para una columna dividida dada, se crean nuevas columnas numeradas).
Pero lo realmente interesante llega cuando hay conflictos, por ejemplo, cuando varios valores intentan terminar en la misma celda. JMP avisa cuando esto sucede (¡lo cual es genial!), pero esta publicación surgió de un conjunto de datos que parecía estar dividiendo correctamente, pero después de analizarlo a fondo me di cuenta de que no era así, y había ignorado esa advertencia porque no la entendía.
En mi opinión, la advertencia debería cambiarse de: "Varias filas, posiblemente con diferentes valores, de las columnas que se conservarán se asignan a la misma fila en la tabla dividida. Solo se conserva un valor de cada columna". ---> a: "Varios valores se asignan a la misma celda; solo se conserva uno".
Re: ¿Mal apilamiento?
@BHarris escribió:
Me sorprendió hace un momento saber que si hay varias columnas divididas para una columna dividida determinada, se crean nuevas columnas numeradas.
Si se utilizan varias columnas divididas, JMP crea los nombres de las columnas como una combinación del nombre de la columna dividida y la entrada de la división por columna:

Si solo se selecciona una columna como columna dividida, el nombre de la columna dividida no se incluye en el nombre de la columna:

Mis colegas ponen los ojos en blanco cuando empiezo a utilizar Big Class para explicar una funcionalidad de JMP.
Pero es un truco maravilloso utilizar un conjunto de datos alternativo para jugar con la configuración:
Con "M" y "F" es obvio lo que está haciendo JMP, no hay necesidad de preguntarse por los "números" que aparecieron con el conjunto de datos original.
Big Class parece muy simple, pero es lo suficientemente complicado como para explicar muchos de los detalles.
Solo faltan las colineales...