Función Col (Suma) seleccionando filas específicas<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
Me gustaría crear una columna que calcule la media o la suma de otras columnas, pero me gustaría especificar la función mediante:
Digamos que si seleccionamos el año el cálculo se producirá por "Año" o,
Digamos col (suma) de NetRevenueWithoutVat por año o "NetRevenueWithoutVat" por "Mes (fecha de estancia)" o
Col (suma) funciones de números de fila específicos...
¿Alguien podría compartir su conocimiento? ¿Cómo hacerlo en secuencias de comandos o ingresando la función Col (Sum) como fórmula en una columna?
¿La lógica detrás de esto?
Muchas gracias de antemano

Re: Función Col (Suma) seleccionando filas específicasTendría que crear una columna separada que contenga una columna de agrupación para cada rango de fechas que desee usar, o tal vez quiera usar algo como:
Col Sum(
If(
:Event Date >= Informat( "02/01/2001", "mm/dd/yyyy" ) & :Event Date <=
Informat( "02/28/2001", "mm/dd/yyyy" ),
:Total Fatal Injuries,
0
)
)
Re: Función Col (Suma) seleccionando filas específicas¡No importa, lo tengo!
Col Suma(
:Cantidad fijada,
:Fecha >= 01 de agosto de 2018 & : Fecha <= 07 de agosto de 2018,
:Número de tarjeta
)Re: Función Col (Suma) seleccionando filas específicasAsí que perdóname, pero soy un nuevo usuario de JMP. Solo estoy usando el editor de fórmulas, no JSL. No estoy seguro de si lo que me estás dando es para JSL o el editor de fórmulas. ¿No puedo poner las condiciones en la fórmula de esta manera?
Suma de columna (: Cantidad fijada , :Fecha >= 8 / 1 / 2018 & :Fecha <= 8 / 7 / 2018 ,:Número de tarjeta )
Excepto que el problema con el que me encuentro es que JMP lo corrige automáticamente para que sea una división, no una fórmula de fecha.
Re: Función Col (Suma) seleccionando filas específicas@Mitch103 ,
Pruebe algo como esto como lo sugiere @EM :
dt = Current Data Table();
dt << Select Where(:Date > StartDate & :Date <ENDDATE></ENDDATE>
Re: Función Col (Suma) seleccionando filas específicas¿Puede usar esta fórmula y definir la lógica para una columna en particular? Por ejemplo, estoy tratando de sumar las cantidades en dólares de cada registro entre dos fechas. Así que la fórmula se vería así:
Suma de columnas ( :Cantidad en dólares, :Fecha)
Pero no estoy seguro de cómo definir el rango de fechas.
Re: Función Col (Suma) seleccionando filas específicascuando uso
Col Sum( :ColumnName, Selected() )
Obtuve el siguiente error:
Row number not set or in range in access or evaluation of 'Selected' , Selected/*###*/()
Alguien podría decirme que puede estar pasando?
Re: Función Col (Suma) seleccionando filas específicasSu código de ejemplo:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << select Where(:age ==12);
n = Col Sum(:age,Selected());
La función Col Sum() funciona de manera diferente en código abierto que en una fórmula. Al procesar los datos, en código abierto, si el segundo elemento está presente, JMP no puede ejecutar la sentencia ya que el valor resultante va a devolver más de un valor. Es decir, el valor devuelto en su ejemplo requeriría que la variable "n" tenga 2 valores. Col Sum() para filas seleccionadas y Col Sum() para filas no seleccionadas. Supongo que JMP podría devolver una lista de valores, pero como @EM indicó que la función Summarize() se usa para esto. Por lo tanto, la razón por la cual el segundo elemento en la función Col Sum() no es válido en código abierto.
Re: Función Col (Suma) seleccionando filas específicas@txnelson :
Gracias . Si bien estoy familiarizado con este enfoque, lo que me sorprendió fue la forma @EM estaba resolviendo el mismo problema.
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Conditional sum", Formula(Col Sum(:age, Selected()))); // This Works
dt << select Where(:age == 12);
n = Col Sum(:age,Selected()); // This yields an error Si bien entiendo que la línea 4 se puede reemplazar fácilmente con su solución, es decir, y esa es mi solución goto,
n = Sum(:age[dt << Get Selected Rows]);
No entiendo por qué esta línea de código está dando como resultado un error en mi caso.
n = Col Sum(:age,Selected());
La documentación no muestra que esta característica exista (al menos en JPM 12), por lo que estaba muy entusiasmado con este nuevo truco, pero parecía funcionar en el caso. @EM Resuelta la pregunta anterior. ¿Alguno de ustedes puede explicar por qué exactamente el mismo código funciona en una fórmula de columna pero arroja un error afuera?
día
Re: Función Col (Suma) seleccionando filas específicasLas funciones Col Stat() son principalmente útiles en fórmulas de columna y, con argumentos de agrupación opcionales, no funcionan en absoluto como funciones independientes (entonces use Summarize() en su lugar).
Mi publicación anterior tenía la intención de mostrar cómo actualizar una columna dinámicamente simplemente seleccionando filas a mano (o por secuencia de comandos). Más un buen truco que algo muy útil...
Ejemplo:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Conditional sum", Formula(Col Sum(:age, Selected())));
dt << select Where(:age == 12);
// Or select rows by hand and see how numbers change dynamically
Re: Función Col (Suma) seleccionando filas específicasLo que quiere hacer es usar la capacidad de hacer referencia a valores en una tabla de datos como un vector de datos y pasarle la matriz de las filas seleccionadas
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << select Where(:age == 12);
n = Sum(:age[dt << Get Selected rows]);Re: Función Col (Suma) seleccionando filas específicas@ian_jmp / @EM / @txnelson - Alguna idea ?
Re: Función Col (Suma) seleccionando filas específicas
¿Esta solución solo funciona en versiones específicas de JMP?
Porque estoy usando JMP 12 y sigo teniendo este error
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << select Where(:age ==12);
n = Col Sum(:age,Selected());
Aquí está mi registro
dt = Abrir( "$SAMPLE_DATA/Big Class.jmp" );
dt << seleccione Donde( :edad == 12 );
n = Col Sum( :edad, Seleccionado/*###*/() );
Número de fila no establecido o dentro del rango en el acceso o evaluación de 'Seleccionado', Seleccionado/*###*/()
Re: Función Col (Suma) seleccionando filas específicasSí, se admite más de una variable de agrupación.
Re: Función Col (Suma) seleccionando filas específicas¡Gracias!
Esto es lo que estaba buscando.
¿Significa eso que podría ir más allá y digamos Suma de columnas ( : Ingresos netos sin IVA , : Año, :Agencia ) ?
Re: Función Col (Suma) seleccionando filas específicasUse ColSum() en fórmulas de columna. La formula Suma de columnas ( : Ingresos netos sin IVA , : Año ) devolverá la suma (no la suma acumulada) agrupada por Año .
Pruebe esta fórmula para un ColSum() que cambia dinámicamente con la selección de fila:
Suma de columna ( : Ingresos netos sin IVA , Seleccionado () )
Re: Función Col (Suma) seleccionando filas específicasLa respuesta puede depender de lo que suceda a continuación. Seguro que puedes hacer:
NamesDefaultToHere(1);
// (1) Get some data
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
// (2) Get summary info into a list and a vector
Summarize(groups = By(:sex), groupMeans = Mean(:height));
// (3) Make a table using the summary info
dt2 = NewTable("Height by Gender",
NewColumn("Gender", Character, Nominal, Values(groups)),
NewColumn("Mean Height", Numeric, Continuos, Values(groupMeans))
);
(Consulte la Guía de secuencias de comandos de JSL para obtener más opciones con Resumir).
Si necesita el paso 3, es mejor que utilice 'Tablas > Resumen' o 'Analizar > Tabular'.
También puede agregar a través de cualquier conjunto de filas, siempre que pueda expresar cuál es esa selección.