Se il valore della colonna riga è uguale a qualsiasi valore di qualsiasi array, allora... Qual è la forma generale di questo formale?Come scrivo un'istruzione If (o qualunque sia la funzione giusta) da valutare quando il valore della colonna di una riga = qualsiasi valore in un array?
Esempio:
If( :ColToCheck == [Uno di questi valori] , quindi 1, altrimenti 0 )
Ri: Se il valore della colonna della riga è uguale a qualsiasi valore di qualsiasi array, allora ... Qual è la forma generale di questo formale?Non direttamente.......ecco perché uso Loc().
Ri: Se il valore della colonna della riga è uguale a qualsiasi valore di qualsiasi array, allora ... Qual è la forma generale di questo formale?Grazie ad entrambi.@txnelson TX mi ha superato la gobba la scorsa notte.Ho appena convertito i caratteri in numerici e ha dato il risultato desiderato.
Penso @vince_faller la soluzione di è quello che sto cercando. L'ho provato con i personaggi e ha funzionato
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 />Ri: Se il valore della colonna della riga è uguale a qualsiasi valore di qualsiasi array, allora ... Qual è la forma generale di questo formale?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)
));Ri: Se il valore della colonna della riga è uguale a qualsiasi valore di qualsiasi array, allora ... Qual è la forma generale di questo formale?1. Una matrice può contenere solo valori numerici.Pertanto, la matrice z deve essere specificata come una lista, non come una matrice
2. Non so cosa sia "cust".
3. Si tratta di una formula di colonna o di un codice JSL aperto?
4. Loc restituisce una matrice delle posizioni in cui si trova il valore di test nell'elenco.Pertanto, è necessario determinare se sono state restituite più di 0 righe per determinare se è stata trovata una corrispondenza.
Di seguito sono riportati un paio di esempi di script che potrebbero aiutarti
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
);
);Ri: Se il valore della colonna della riga è uguale a qualsiasi valore di qualsiasi array, allora ... Qual è la forma generale di questo formale?Grazie.
Sto cercando di fare qualcosa del genere.
#1 si aspetta un numero.
# 2 il ritorno restituisce tutti i valori mancanti.Ho provato l'espressione del tipo di dati e numerico, non ho potuto eseguire la distribuzione per vedere se c'erano valori diversi dal valore mancante.
cust = ["customer1","customer2","customer3"];
If( Loc( As List( cust ), :Name( "Ship-To Customer" ) ),
1,
0
);
//aggiornamento 26/04/19
il post originale non aveva il cust definito, invece si vedeva
z = ["cliente1","cliente2","cliente3"];
Ecco perché TXNelson chiede cos'è "cust"?
Ri: Se il valore della colonna della riga è uguale a qualsiasi valore di qualsiasi array, allora ... Qual è la forma generale di questo formale?Utilizzare la funzione Loc() per verificare se i valori sono gli stessi in un elenco quando vengono confrontati.Quando lo fai con una matrice, converti la matrice in una lista.
z=[1,2,3,4];
loc(as list(z),2);