Si el valor de la columna de la fila es igual a cualquier valor de cualquier matriz, entonces... ¿Cuál es la forma general de este formal?¿Cómo escribo una declaración If (o cualquiera que sea la función correcta) para evaluar cuando el valor de la columna de una fila = cualquier valor en una matriz?
Ejemplo:
If( :ColToCheck == [Cualquiera de estos valores] , entonces 1, sino 0 )
Re: Si el valor de la columna de la fila es igual a cualquier valor de cualquier matriz, entonces... ¿Cuál es la forma general de este formal?No directamente... por eso uso Loc().
Re: Si el valor de la columna de la fila es igual a cualquier valor de cualquier matriz, entonces... ¿Cuál es la forma general de este formal?Gracias a los dos.@txnelson TX me superó la joroba anoche.Acabo de convertir caracteres a numéricos y me dio el resultado deseado.
pienso @vince_faller La solución de es lo que estoy buscando. Lo probé con personajes y funcionó.
New Column( "Some Check 2",
Numeric,
"Continuous",
Format( "Best", 12 ),<BR /> Formula( !!Contains( {"TIM", "ALICE", "JANE", "UDY"}, :name ) )
),<BR /> // "UDY" is in there to verify contains will not return true for "JUDY"<BR />Re: Si el valor de la columna de la fila es igual a cualquier valor de cualquier matriz, entonces... ¿Cuál es la forma general de este formal?Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
dt << new Column("Some Check", FOrmula(
//only doing !! so it's negates the output of contains (which is WHERE it is in the list)
!!Contains({59, 63, 48, 70}, :height)
));Re: Si el valor de la columna de la fila es igual a cualquier valor de cualquier matriz, entonces... ¿Cuál es la forma general de este formal?1. Una matriz solo puede contener valores numéricos.Por lo tanto, la matriz z debe especificarse como una Lista, no como una Matriz
2. No sé qué es "cust".
3. ¿Es esta una fórmula de columna o un código JSL abierto?
4. Loc devuelve una matriz de las posiciones donde se encuentra el valor de prueba en la Lista.Por lo tanto, debe determinar si se devolvieron más de 0 filas para determinar si se encontró una coincidencia.
A continuación hay un par de ejemplos de secuencias de comandos que pueden ayudarlo.
Names Default To Here( 1 );
dt = Current Data Table();
// As a formula in a new column
dt << New Column( "is present",
formula(
z = {"customer1", "customer2", "customer3"};
If( N Rows( Loc( z, :Name( "Ship-To Customer" ) ) > 0 ),
1,
0
);
)
);
// In open JSL
z = {"customer1", "customer2", "customer3"};
For( i = 1, i <= N Rows( dt ), i++,
If( N Rows( Loc( z, :Name( "Ship-To Customer" )[i] ) ) > 0,
1,
0
);
);Re: Si el valor de la columna de la fila es igual a cualquier valor de cualquier matriz, entonces... ¿Cuál es la forma general de este formal?Gracias.
Estoy tratando de hacer algo como esto.
#1 espera un número.
# 2, el retorno está regresando todos los valores faltantes.Probé la expresión del tipo de datos y el número, no pude ejecutar la distribución para ver si había valores distintos al valor faltante.
cust = ["customer1","customer2","customer3"];
If( Loc( As List( cust ), :Name( "Ship-To Customer" ) ),
1,
0
);
//actualización 26/04/19
la publicación original no tenía definido el cliente, sino que mostraba
z = ["cliente1","cliente2","cliente3"];
Es por eso que TXNelson pregunta ¿qué es "cliente"?
Re: Si el valor de la columna de la fila es igual a cualquier valor de cualquier matriz, entonces... ¿Cuál es la forma general de este formal?Utilice la función Loc() para verificar si algún valor es el mismo en una lista cuando se compara.Al hacer esto con una matriz, convierta la matriz en una lista.
z=[1,2,3,4];
loc(as list(z),2);