ColumnRank por grupo?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
¿Hay alguna manera de construir una fórmula equivalente a «ColumnRank by…» (grupo)? Normalmente uso la plataforma de distribución (con la opción «por grupo») y guardo los rangos para ese propósito en una columna estática. Pero esta vez, necesito una columna dinámica (calculada).
Gracias,
claudio
Re: ColumnRank por grupo?Hola a todos,
La función Col Rank ahora admite variables BY como se solicitó originalmente. Parece que se agregó soporte completo en el marco de tiempo de JMP 13, por lo que si está usando esa versión o una más reciente, debería poder hacerlo.
La ayuda en línea de JMP brinda algunos detalles más y opciones de desempate:
https://www.jmp.com/support/help/en/15.1/#page/jmp/statistical-functions-2.shtml?os=win&source=application#ww2752649
Sé que este es un hilo más antiguo, pero quería que esta información estuviera disponible para cualquier otra persona que pueda estar buscándola.
¡Salud!
audrey
Re: ColumnRank por grupo?Gracias Ron
Finalmente, opté por modificar el script de actualización original. Es un procedimiento de 3 pasos:
- El primer paso es la actualización original (fuente de datos ODBC) que crea una nueva tabla (debido a las columnas de código duro);
- Luego, un segundo paso de guión es actualizar mi tabla principal con los datos de esta nueva tabla;
- El último paso es cerrar la nueva tabla.
De esta manera, puedo crear tantas columnas de código duro nuevas como necesite (el script no necesitará ninguna solución).
claudio
Re: ColumnRank por grupo?hola claude.bellavance ,
si hay un problema con una actualización, todo lo que necesita hacer es eliminar las columnas codificadas justo antes de la actualización y volver a introducirlas inmediatamente después.
tal como:
eliminar columnas codificadas de forma rígida;
actualizar;
volver a calcular las columnas codificadas de forma rígida;
mejor,
Ron
Re: ColumnRank por grupo?Muchas gracias Ron. Es una manera ingeniosa de resolver el problema.
Desafortunadamente, no puedo usar el script porque tengo que pasar por una columna calculada. De hecho, si agrego columnas con datos duros, la actualización de mi tabla con mi base de datos (a través de DNS/ODBC) creará una nueva tabla en lugar de simplemente reemplazar los datos.
claudio
Re: ColumnRank por grupo?hola claude.bellavance
También estoy insatisfecho con la idea de " Los lazos se rompen arbitrariamente" . al menos debería haber una opción para cambiar eso para que los empates obtengan el mismo rango como sucedería en una variable ordinal regular.
Tengo otra forma de "clasificar por" sin ordenar la tabla; en mi caso, la clasificación es una molestia. da valores iguales a los lazos.
mejor,
Ron
Nombres predeterminados hasta aquí ( 1 ) ;
// definir la fuente de datos
dt = Abierto ( "$SAMPLE_DATA/Clase grande.jmp" ) ;
// agrega una columna para el rango
dt << Nueva columna ( "Rango" , numérico , ordinal ) ;
//// opción 1: Clasificar por columna
// extrae la lista de los niveles de las variables
porvarlist = matriz asociativa ( dt : años ) << conseguir llaves ;
// crea listas separadas de clasificación de altura para cada grupo de edad
por ( ib = 1 , ib <= artículos ( porvarlist ) , ib ++,
evaluar ( analizar gramaticalmente ( "lista de alturas" || carbonizarse ( porvarlist [ ib ]) || " = matriz asociativa( " || carbonizarse ( dt : altura [ dt << obtener filas donde ( : años == porvarlist [ ib ])]) || " ) << obtener claves" )) ;
) ;
por ( ic = 1 , ic <= filas ( dt ) , ic ++,
: Rango [ ic ] = evaluar ( analizar gramaticalmente ( "loc(lista de alturas" || carbonizarse ( dt : años [ ic ] ) || " ," || carbonizarse ( dt : altura [ ic ]) || " ) " )) ;
) ;
// ver si funciono
dt << Clasificar (
Por ( : años , : altura ) ,
Ordenar ( ascendente , ascendente )
) ;
////
//// Opción 2: Clasificación (sin por columna)
// obtener los valores únicos de altura como una lista
lista de alturas = matriz asociativa ( dt : altura ) << conseguir llaves ;
Para ( i = 1 , i <= n filas ( dt ) , i ++,
dt : Rango [ i ] = ubicación ( lista de alturas , : altura [ i ] ) ;
) ;
// ver si funciono
dt << Clasificar (
Por ( : altura ) ,
Ordenar ( ascendente )
) ;
Re: ColumnRank por grupo?Hola jerry,
No hay problema. ¡Estoy feliz de ver que algún día mis deseos se harán realidad!
Muchas gracias de nuevo.
claudio
Re: ColumnRank por grupo?Perdón por la confusión, aparentemente no estaba prestando atención a qué versión estaba activa en mi sistema cuando estaba mirando esto. Entonces, como resultado, obtuvo una vista previa "no autorizada" de la funcionalidad planificada para una versión "futura" de JMP.
Re: ColumnRank por grupo?Hola MS,
bueno esto es muy interesante solución alterna. Está abierto para mí un completamente nueva área (Eval, Fórmula, etc.).
Estoy cruzando los dedos para una futura versión de JMP con esta nueva función "ColRank by...".
Muchas gracias por tomarse el tiempo para responder a mi pregunta.
claudio
Re: ColumnRank por grupo?Me temo que los argumentos opcionales para Col Rank() no son compatibles con la versión actual de JMP.
No tengo una buena solución alternativa que funcione realmente dinámicamente. La fórmula de columna en el ejemplo a continuación debería funcionar, pero solo si la variable está ordenada dentro de grupos.
dt = Abierto ( "$SAMPLE_DATA/Clase grande.jmp" ) ;
dt << clasificar ( por ( : años , peso ) , Reemplazar tabla ( 1 )) ;
F = exp. (
evaluar ( Expr evaluación ( Número de columna ( : peso , Fila () <= exp. ( Fila ()) ,: años )))
) ;
dt << Nueva columna ( "Rango de peso por edad" , numérico , fórmula ( Nombre Expr. ( F ))) ;
Re: ColumnRank por grupo?Hola jerry,
¿Puedes explicar más por favor? El manual es muy minimalista sobre este tercer argumento.
Rango de columna
Clasifica el valor de cada fila, desde 1 para el valor más bajo hasta el número de no ‐ columnas faltantes para el valor más alto. Los lazos se rompen arbitrariamente .
No entiendo lo que podría significar y cómo usarlo.
¡Gracias por tu ayuda!
claudio
Re: ColumnRank por grupo?Hola claude,
La función Col Rank(column, ) hace lo que está buscando. El valor predeterminado para desempatar es el orden de las filas, pero hay un tercer argumento opcional que permite otras opciones. Espero que esto ayude.
-Alemán