¿Cómo uso la Fórmula Col Máxima con una condición "dónde"?Hola, tengo un problema en el que quiero formular una nueva columna como punto de referencia para todos los demás países. Si hay más filas para el país, quiero tomar su valor máximo como punto de referencia. Consulte el siguiente ejemplo para obtener una aclaración.
Los datos se ven así:
Período de valor del país
10 201301
30 201301
B 20 201301
C 50 201301
D 40 201301
Lo que quiero lograr (con fórmula de celda): Col Máximo (:valor,:período,:país) donde :país == "A"
Producción:
País Valor Período Punto de referencia
10 201301 30
30 201301 30
B 20 201301 30
C 50 201301 30
D 40 201301 30
Como puede ver, quiero comparar el valor máximo de solo el país A.
Probé con Col Maximum (:value, :period, :country == "A") y devolverá "50"
Col Máximo (:valor, :período, :país) y Col Máximo (:valor, :período, :país == "A") ambos devuelven "50"
¡Estoy bastante seguro de que hay una solución simple para esto!
¡Espero que puedan ayudar!
¡Gracias Gracias!
Re: ¿Cómo uso la fórmula Col Maximum con una condición de "dónde"?Pregunta interesante: ¿sigues esperando una respuesta?
Hay un conjunto de publicaciones con preguntas similares sobre cómo restringir el Col ... agregación funciones a un subconjunto específico.
(principalmente: restringirlos al subconjunto de filas no excluidas)
https://community.jmp.com/t5/Discussions/Compute-Column-Mean-while-restricting-observations-used/mp/10377#M10055
https://community.jmp.com/t5/Discussions/JMP10-Col-Max-and-Col-Min-functions-returned-the-data-from/td-p/10555
https://community.jmp.com/t5/Discussions/Col-Functions-and-Row-States/td-p/351705
La idea:
Si uno está interesado en la altura media, puede agregar todas las filas, o puede agregar entradas masculinas y femeninas por separado.
Para el segundo, la solución es casi tan fácil como para el primero: solo use una variable GroupBy adicional para dividir entre datos deseados y no deseados.
Pero, lo que un usuario a menudo necesita además: los valores deben aparecer en todas las filas respectivas (es decir, también para mujeres).
[El ejemplo con la columna de referencia en la publicación original ilustra por qué tal comportamiento podría tener sentido].
Con GroupBy, es fácil obtener los valores correctos, pero cómo distribuirlos en TODAS las filas.
Si hay algo como una tabla de búsqueda detrás de un Col ... agregación función, la función utiliza el mismo identificador
1) para dividir filas en diferentes grupos para la agregación ("M" / "F"):
Judy es mujer, el peso en la fila de Judy debe incluirse en peso medio femenino
2) como índice al leer una entrada de la tabla de búsqueda ("M" / "F"):
Judy es mujer, la nueva columna debe contener peso medio femenino en la fila de judy
Entonces, tanto hombres como mujeres obtienen los mismos valores, porque el identificador es el mismo (media 1), o obtienen valores diferentes porque el identificador es diferente (media 2).
es decir:
Un usuario de Jmp pueden use la función GroupBy para eliminar valores del cálculo a través de:
- calcular diferentes valores para diferentes subgrupos
- volcar los resultados no deseados
pero luego se pone
- obtener diferentes valores para diferentes subgrupos
gratis, incluso si no ordenó esta opción (OK, el código cuenta otra historia, pero pensemos en lo que el usuario quería) 
Hay un comando de una línea para eliminar mujer del cálculo de la media, pero para escribir los valores en las filas respectivas con "mujer"?
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column("mean1", Formula(Col Mean(:weight, :age)));
dt << New Column("mean2", Formula(Col Mean(:weight, :age, :sex)));
dt << New Column("mean2", Formula(If(:sex=="M", Col Mean(:weight, :age, :sex))));
dtM = dt << subset( Rows( dt << get rows where( :sex== "M" ) ), selected columns( 0 ));
dtM << New Column("mean_M", Formula(Col Mean(:weight, :age)));
dt << Update(
With( dtM ),
Match Columns(:age = :age ),
Add Columns from Update Table( :mean_M ),
Replace Columns in Main Table( None )
);
Re: ¿Cómo uso la fórmula Col Maximum con una condición de "dónde"?Gracias.Re: ¿Cómo uso la fórmula Col Maximum con una condición de "dónde"?Col Maximum() solo es viable en una fórmula, donde la salida es un resultado de separación por fila.Para hacer lo que quieras, usa la función Summarize().
Ver:
Ayuda==>Índice de secuencias de comandos==>Resumir
Re: ¿Cómo uso la fórmula Col Maximum con una condición de "dónde"?Hola, Mark,
Trató de obtener el peso máximo por edad o sexo, pero solo produjo un valor en el siguiente script.
por edades, había 6 edades diferentes, para cada una de ellas, me gustaría calcular el peso máximo para cada edad.
Names Default To Here( 1 );
Clear Log();
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
max_weight_by_age = Col Max( :weight, :age );
max_weight_by_sex = Col Max( :weight, :sex );
Re: ¿Cómo uso la fórmula Col Maximum con una condición de "dónde"?Podría agregar esta fórmula a una nueva columna en la tabla de datos de ejemplo de Big Class:
Col Max( :weight, :age )
Re: ¿Cómo uso la fórmula Col Maximum con una condición de "dónde"?Hola, Mark,
¿Puede dar un ejemplo sobre cómo usar cuando usa col Max?
Gracias.Re: ¿Cómo uso la fórmula Col Maximum con una condición de "dónde"?Consulte Ayuda > Índice de secuencias de comandos > Funciones:

Re: ¿Cómo uso la fórmula Col Maximum con una condición de "dónde"?Gracias Jim, quise decir solo resumir. Cómo lo hago es (dos comandos jsl):
Resuma en la columna, cree una nueva tabla con valores (mín./máx./o cualquier otra estadística para la columna).
Luego actualizo la tabla principal usando la tabla resumida haciendo coincidir las entradas de fila.
Tenía curiosidad por saber si hay una opción condicional en el comando Max col() que puede identificar valores de columna únicos y eliminar la necesidad de este paso adicional. (eliminaría una mesa extra y 2 escalones extra).
Aprecio tu ayuda.
Re: ¿Cómo uso la fórmula Col Maximum con una condición de "dónde"?Por lo general, uso la función Summarize(), en lugar de la plataforma de resumen, para determinar fácilmente qué niveles se encuentran dentro de una columna.Luego, a partir de ahí, solo tiene que generar las fórmulas que necesita para hacer el trabajo.
Re: ¿Cómo uso la fórmula Col Maximum con una condición de "dónde"?Supongamos que la columna del país tiene varios nombres y no conozco todos los valores posibles. ¿Cómo se puede modificar esta consulta para hacer eso?
Puedo hacer eso creando una tabla de resumen y luego actualizando la tabla nuevamente, pero ese parece ser un método ineficiente, tenía curiosidad si se podía hacer en un solo paso como este.
Gracias por adelantado.
Re: ¿Cómo uso la fórmula Col Maximum con una condición de "dónde"?¡Lo siento por la respuesta tardía! ¡Gracias por la solución!Re: ¿Cómo uso la fórmula Col Maximum con una condición de "dónde"?Dada la forma en que expuso sus necesidades, suponiendo que sepa cuál es el país que tiene las entradas múltiples.
dt = Current Data Table();
rowperiod = :Period[Row()];
Max(
:Value[dt << get rows where(
:Country == "A" & :period == rowperiod
)]
);