Equivalente JMP de la función CONTAR.SI de ExcelEstoy intentando imitar este comportamiento tipo Excel:
| | A | B |
| 1 | tipo de falla | numFailoresEsteTipo |
| 2 | f1 | =contar.si($a$2:$a$999,a2) |
| 3 | f2 | =contar.si($a$2:$a$999,a3) |
| 4 | f1 | =contar.si($a$2:$a$999,a4) |
| 5 | f1 | =contar.si($a$2:$a$999,a5) |
| 6 | f2 | =contar.si($a$2:$a$999,a6) |
| ... | ... | ... |
... en JMP. ¿Es posible hacerlo como fórmula de columna?
Probé "Col Sum( :failureType == :failureType[ Row() ] )" pero no funciona y no entiendo por qué. A veces ":ColumnName" devuelve un único valor y otras veces devuelve todas las entradas de la columna y las recorre automáticamente. ¿Hay alguna forma de saber cuál de las dos opciones hará, tal vez desde el índice de secuencias de comandos?
Análisis y modelado de datos básicosRe: Equivalente JMP de la función CONTAR.SI de Excel
¿Tal vez Col Sum de 1 por tipo de falla?
Col Sum(1, :FailureType)
Aquí la columna 6 tiene la fórmula Col Sum(1, :age)

Re: Equivalente JMP de la función CONTAR.SI de ExcelSí, eso probablemente funcionará.
¿Por qué no funcionó mi función Col Sum(...)? ¿Se actualiza Row() internamente en cada paso?
Re: Equivalente JMP de la función CONTAR.SI de ExcelCrea una columna con solo Row() y verás lo que devuelve

Puedes hacer lo mismo para
:failureType[Row()]
y para
:failureType
y finalmente para
:failureType == :failureType[Row()]
para ver con qué terminará (está comparando el valor de fila actual del tipo de falla con el valor de fila actual del tipo de falla con solo una sintaxis diferente, que casi siempre es 1).
Re: Equivalente JMP de la función CONTAR.SI de ExcelOtra opción es Col Number()
Col Number(:FailureType, :FailureType)
Re: Equivalente JMP de la función CONTAR.SI de ExcelEstas respuestas respondieron directamente a tu pregunta sobre una función que funciona como Excel. También puedes usar Tabla > Resumen, Analizar > Tabular y Gráfico > Generador de gráficos para realizar resúmenes sin usar una columna de fórmulas, si es lo que buscas.
Re: Equivalente JMP de la función CONTAR.SI de ExcelEsta fórmula también parece funcionar:
Names Default to Here(1);
n1 = :failureType;
Col Sum( :failureType == n1 )
Parece que dentro de la función Col Sum se espera iterar sobre listas, de forma similar a hacer un bucle for en Python sobre variables comprimidas, pero en la segunda línea, solo obtiene el valor de :failureType de la fila actual. Este tipo de comportamientos implícitos son increíblemente útiles, pero solo si el usuario comprende cómo funcionan.
Re: Equivalente JMP de la función CONTAR.SI de ExcelVaya, qué sorpresa. No esperaba que funcionara así.
¿Cómo te enteraste?
Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "ColSum1",
Formula(
Col Sum( :age == 12 );
)
);
New Column( "ColSum2",
Formula(
twelve = 12;
Col Sum( :age == twelve );
)
);
New Column( "ColSum3",
Formula(
myAGE = :age;
Col Sum( :age == myAGE );
)
);
New Column( "ColSum4",
Formula(
myAGE = :age;
myname= :name;
Col Sum( show(myname,myAge,:name,:age,"-");:age == myAGE );
)
);
Re: Equivalente JMP de la función CONTAR.SI de Excelpublicación relacionada con algunos paralelos: ¿Contar.si es equivalente?
pero sin la magia de @BHarris : )
Re: Equivalente JMP de la función CONTAR.SI de ExcelAunque parezca que funciona, no lo usaría (creo que debería estar bien si requiriera que tenga :failureType como byvar). Creo que es algún tipo de comportamiento no deseado (incluso más que usar 1, que tampoco debería estar permitido según el soporte de JMP, pero esperemos que JMP nunca rompa eso).
Haga que el uso de expresiones de fórmula en Establecer cada valor y el uso de expresiones como primer argumento en las fórmulas estadísticas de Col sean un comportamiento admitido ).
Puedes informar al soporte de JMP e intentar ver si pueden darte una explicación técnica sobre por qué funciona como lo hace. También puedes intentar usar otras comparaciones de manera similar.

Re: Equivalente JMP de la función CONTAR.SI de Excel@hogi Probablemente no sea tan mágico como parece: el primer argumento de Col Sum es una expresión y, en este caso, dado que n1 está precalculado (probablemente se establece en el valor de la fila actual debido al contexto), y las expresiones == parecen devolver 1 o 0, por lo tanto, simplemente está sumando un montón de 1 donde el valor de la columna es igual a n1 y 0 en caso contrario.
Lo que me parece un poco mágico es que, a veces, en las fórmulas de columnas, JMP itera sobre las filas de una columna cuando se ingresa como ":columnName" y otras veces solo extrae el valor de esa columna en la fila actual. Esto me ha parecido un misterio desde la discusión en ese otro hilo.
Supongo que la función Col Number() es la más apropiada para usar en este caso, probablemente almacena en caché de manera más limpia que esta.
Francamente, no sabía que existía Col Number(). Pasé la mayor parte de mi vida adulta en Excel, por lo que me gustaría que hubiera una correspondencia entre las funciones de Excel y las funciones de JMP en algún lugar.
Re: Equivalente JMP de la función CONTAR.SI de ExcelNew Column( "ColSum4",
Formula(
myAGE = :age;
myname= :name;
Col Sum( show(myname,myAge,:name,:age,"-");:age == myAGE );
)
);
Es bastante ilustrativo. El comportamiento de la función acumulativa es un poco diferente de cómo pensé que se comporta.
Supongo que Col Sum evalúa el argumento una vez y luego agrupa/recopila los resultados según groupBy.
Pero en realidad:
La fórmula se evalúa para cada fila, en total 40x para las filas RWx.
Y con cada iteración, Col Sum evalúa su argumento 40 veces, para cada fila RWy.
Supongo que intenta almacenar en caché el resultado y no evaluará el argumento nuevamente para otros RWx si puede estar seguro de que será el mismo resultado.
Pero en el caso de Show() o :age = myAGE, debe evaluarse una y otra vez.
-> en total 40 x 40 veces.
Entonces, por ejemplo para la fila RWx = 3 (myName = Jane), evalúa el argumento 40 veces.
Y para 8 de las 40 RWy, :age == myAge da como resultado 1. Por lo tanto, Col Sum es 8 para la fila 3.
En consecuencia, Col Sum es 3 para la fila 40.
Re: Equivalente JMP de la función CONTAR.SI de Excel
@jthi escribió:
Aunque parezca que funciona, no lo usaría (creo que debería estar bien si requiriera que tenga :failureType como byvar). Creo que es algún tipo de comportamiento no deseado (incluso más que usar 1, que tampoco debería estar permitido según el soporte de JMP, pero esperemos que JMP nunca rompa eso).
Haga que el uso de expresiones de fórmula en Establecer cada valor y el uso de expresiones como primer argumento en las fórmulas estadísticas de Col sean un comportamiento admitido ).
También me siento mucho más seguro si una funcionalidad está documentada, protegida de alguna manera contra una eliminación repentina...
JMP tiene que averiguar si está bien almacenar en caché los resultados. ¿Quién conoce la lógica?
Aquí, JMP considera que está bien utilizar los datos almacenados en caché:
t0 = hptime();
New Column( "test",
Formula(
wait(0.1);
Col Sum( hp time() )
),
);
current data table() << run formulas();
show((hptime()-t0)/1000000)
Re: Equivalente JMP de la función CONTAR.SI de Excel@BHarris
@BHarris escribió:
A veces, en fórmulas de columnas, JMP iterará sobre las filas de una columna cuando se ingrese como ":columnName"
¿Puedes darme un ejemplo?
Re: Equivalente JMP de la función CONTAR.SI de ExcelClaro, abre BigClass.jmp y agrega una columna con esta fórmula:
Col Sum ( :altura * :peso, :sexo )