Obtenga filas que satisfagan una condición dentro de una fórmula de columnaTodas,
Probablemente sea una pregunta fácil, pero en busca de ayuda sobre esto. ¿Hay alguna manera de obtener filas que coincidan con una condición dentro de una fórmula de columna?
En el ejemplo que se muestra a continuación, uno debería poder lograr la suma agrupada de un grupo dado. Si quisiera agregar una condición además de esto, digamos: la altura debe ser> 60, ¿cómo puedo lograrlo?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column("CondSum",Numeric,Continuous,Formula(Col Sum(:weight,:age)));Fuera de una fórmula de columna, creo que es fácil y puedo lograrlo. Sin embargo, me gustaría implementar esto a través de una fórmula de columna, si es posible.
Re: Obtener filas que satisfagan una condición dentro de una fórmula de columnaParece que la fórmula solo se evalúa cuando cambia la columna Edad.Sin embargo, la siguiente fórmula parece darte lo que quieres.
myheight = :height;
myage = :age;
Sum( :weight[Current Data Table() << get rows where( :age == myage & :height >= myheight )] );
Re: Obtener filas que satisfagan una condición dentro de una fórmula de columnaAsí que supongo que tiene algo que ver con
El resultado se almacena en caché internamente para que múltiples evaluaciones sean eficientes
Aunque no puedo decirlo con seguridad.Si solo usa una columna intermedia, parece funcionar bien.
Names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New COlumn("Conditional", Formula(
myheight = :height;
:height >= myheight; // should always be 1
//:height >= .5*weight // this might be a better example
));
dt << New Column("CondSum",Numeric,Continuous,Formula(
Col Sum( :weight, :age, :Conditional );
));Re: Obtener filas que satisfagan una condición dentro de una fórmula de columnaHola, poner una comparación como argumento byVar es una buena idea:
Col Sum( :weight, :age, :height >= 60 )
Estoy interesado en poner una comparación en el argumento byVar que lo compara con la fila actual:
myheight = :height;
Col Sum( :weight, :age, :height >= myheight )
Esto no funciona como se esperaba: el cálculo muestra un conjunto confuso de números, y luego todos cambian a "1" si cambio la altura de alguien.
¿Hay alguna forma de hacer esto?
(Solo para un mejor marco de referencia, en mi tabla real, estoy tratando de contar filas donde la fecha en colA es mayor que el valor de fecha en colA y donde la fecha en colB es menor que el valor de fecha en colB).
Re: Obtener filas que satisfagan una condición dentro de una fórmula de columnaHola Uday,
De hecho, puede simplemente escribir la condición como el siguiente argumento.
Col Sum( :weight, :age, :height > 60 )
Puede que no se vea bien al principio en este ejemplo de Big Class porque la suma es la misma para los niños de 12 años por debajo y por encima de 60 pulgadas.Resulta que son las mismas sumas.