Come posso identificare le parole (usando la formula in colonna) che hanno più di 2 caratteri diversi dalla mia parola di riferimento?Ciao a tutti,
Ho una colonna composta da parole che hanno una combinazione di caratteri diversi (es. AAAAAAAAAAA - parola con 10 caratteri). Voglio identificare in una colonna adiacente le parole che hanno più di 2 caratteri diversi (es. A B AAAA CE AA). La posizione in cui le lettere sono diverse non ha importanza e inoltre alcune parole possono anche essere più corte o più lunghe della mia parola di riferimento.
Pertanto, voglio ottenere una formula che mi permetta di distinguere/identificare le parole che hanno meno/più di 2 caratteri diversi rispetto alla mia sequenza di riferimento e hanno la stessa lunghezza. Sono ancora un principiante in JMP e non so se sia possibile ottenere questo risultato. Fammi sapere se hai qualche suggerimento 
Modellazione statistica avanzataRicerche sui consumatori e sul mercatoProgettazione di esperimentiRi: Come posso identificare le parole (usando la formula in colonna) che hanno più di 2 caratteri diversi dalla mia parola di riferimento?Grazie Jthi! Funziona bene 
Ri: Come posso identificare le parole (usando la formula in colonna) che hanno più di 2 caratteri diversi dalla mia parola di riferimento?Grazie per ulteriori informazioni! Dai un'occhiata allo script di modifica più breve dall'indice degli script:

Con ciò potresti essere in grado di fare qualcosa, a meno che non sia troppo lento. Forse anche Pat Match potrebbe farlo, ma non ho (ancora) esaminato come usarlo correttamente.
editList = Shortest Edit Script(:List of sequences, "FEBRUARY");
common = "";
For(i = 1, i <= N Items(editList), i++,
If(editList[i][1] == "Common",
common = common || editList[i][2]
)
);
Length(common) < Length(:List of sequences) - 2;

Ri: Come posso identificare le parole (usando la formula in colonna) che hanno più di 2 caratteri diversi dalla mia parola di riferimento?Ciao Craige,
Grazie per l'aiuto. Ho da 1 a 5e6 e una sola parola di riferimento. Fondamentalmente voglio filtrare le parole che hanno più di 2 lettere diverse rispetto a una parola di riferimento e quindi non richiedo più di sì/no o 0/1 come risposta. Analizzando le tue domande:
test = "AEIOUA" // nDiff = 0 per stringa identica
test = "AAEIOU" // nDiff = 1 - per le stesse lettere, riordinato.
- La prima A è solo quella mantenuta nella stessa posizione. (5 lettere diverse)
test = "AEIOU" // nDiff = 1 per le stesse lettere, ne manca una a destra
test = "EIOUA" // nDiff = 1 per le stesse lettere, ne manca una a sinistra
prova = "EIOU" // nDiff = 1
prova = "AA" // dDiff = 1
prova = "AXA" // dDiff = 1
- La lunghezza non è la stessa di AEIOUA. Per questo ho applicato una funzione Len per filtrare quelle parole.
test = "AXXXXA" // dDiff = 1 per la lunghezza corrispondente
- La prima e l'ultima A vengono mantenute nella stessa posizione. (4 lettere diverse)
prova = "AEI UO A" // dDiff = 0 per le lettere interne scambiate
Solo 2 lettere diverse da AEIOUA, quindi supererà i criteri.
test = "AEIOUEIOU" // nDiff = 1 per lettere ripetute
Sequenza lunga. Rimosso utilizzando Len.
Scusate, non sono stato chiaro nello spiegare la mia domanda/problema. Ho ricreato un esempio di ciò che sto cercando oltre alle tue domande.
| Sequenza di riferimento | FEBBRAIO |
| | |
| Elenco delle sequenze | Etichetta: più di 2 caratteri diversi dal riferimento? |
| FEBBRAIO UN UARY | NO |
| WAAA RUARIO | SÌ |
| YRAURBEF | SÌ |
| FEBBRAIO R R R | NO |
| FEBBRAIO W | NO |
| Y E AURBEF | SÌ |
| Y E AUR ARIO | SÌ |
Ri: Come posso identificare le parole (usando la formula in colonna) che hanno più di 2 caratteri diversi dalla mia parola di riferimento?Abbiamo bisogno di qualche altro esempio. A cosa serve il numero di differenze (non specificare eccessivamente, indica dove non è importante).
ref = "AEIOUA" // cercando di capire la regola per la lettera ripetuta
test = "AEIOUA" // nDiff = 0 per stringa identica
test = "AAEIOU" // nDiff = ? per le stesse lettere, riordinato
test = "AEIOU" // nDiff = ? per le stesse lettere, mancante una a destra
test = "EIOUA" // nDiff = ? per le stesse lettere, ne manca una a sinistra
test = "EIOU" // nDiff = ?
prova = "AA" // dDiff = ?
test = "AXA" // dDiff = ?
prova = "AXXXXA" // dDiff = ? per la lunghezza corrispondente
test = "AEIUOA" // dDiff = ? per le lettere interne scambiate
test = "AEIOUEIOU" // nDiff = ? per lettere ripetute
Queste risposte aiuterebbero a scegliere un algoritmo:
Hai detto ~1e6 parole di prova; quante parole di riferimento stai guardando?
Avrai bisogno di risposte diverse da "sì/no, ci sono più di 2 differenze"? Il conteggio delle differenze sarà utile?
Ri: Come posso identificare le parole (usando la formula in colonna) che hanno più di 2 caratteri diversi dalla mia parola di riferimento?Sembra che io abbia frainteso cosa intendevi con " Voglio identificare in una colonna adiacente le parole che hanno più di 2 caratteri diversi ". Ciò che ho suggerito contrassegnerebbe le righe in cui ciascuna cella nella colonna di origine contiene una stringa composta a sua volta da più di due caratteri distinti (quindi non esiste alcuna sequenza o stringa di riferimento).
Ri: Come posso identificare le parole (usando la formula in colonna) che hanno più di 2 caratteri diversi dalla mia parola di riferimento?Ciao Jthi, grazie per il suggerimento.
Ad essere sincero sto ancora cercando di capire la formula :'). Nel file su cui sto lavorando ho una sola parola di riferimento e devo vagliare più di un milione di voci di riga con ogni possibile combinazione di posizione/lettera. Presumo che questa formula non funzionerebbe perché non posso definire quei valori nella formula. Sarebbe possibile adattarlo considerando un database Ive di grandi dimensioni?
Ri: Come posso identificare le parole (usando la formula in colonna) che hanno più di 2 caratteri diversi dalla mia parola di riferimento?Ciao Ian,
Grazie per il feedback. Ho provato ad implementare la formula che hai scritto ma non capisco dove posso definire che la mia sequenza di riferimento sia AAAAAAA e non qualcos'altro. Ho sostituito il "" nella selezione degli elementi con "AAAAAAAA" ma il risultato non era corretto. Qualche suggerimento su come posso aggiornare la formula che hai scritto?
Ri: Come posso identificare le parole (usando la formula in colonna) che hanno più di 2 caratteri diversi dalla mia parola di riferimento?Molti modi per farlo. Ecco un'opzione aggiuntiva:
Names Default To Here(1);
/*
a = "ABAAAACEAA";
b = "AAAAAAAAAA";
Show(!IsMissing(Substitute(a, Left(a,1), "")));
Show(!IsMissing(Substitute(b, Left(b,1), "")));
*/
New Table("Untitled 2",
Add Rows(3),
New Column("Column 1", Character, "Nominal", Set Values({"ABAAAACEAA", "AAAAAAAAAA", "BBBBAAA"})),
New Column("Column 2",
Numeric,
"Continuous",
Format("Best", 12),
Formula(!Is Missing(Substitute(:Column 1, Left(:Column 1, 1), "")))
)
);
Colonna1 è la colonna con i caratteri
Formula(!Is Missing(Substitute(:Column 1, Left(:Column 1, 1), "")))
in questo semplice esempio l'idea è quella di sostituire tutti i valori nella stringa trovata dalla prima posizione e se sono rimasti ancora alcuni caratteri, sappiamo che c'era più di 1 carattere nella stringa. Se hai più di un valore da sostituire, dovresti essere in grado di utilizzare la stessa idea modificando gli argomenti della funzione Sostituisci
Ri: Come posso identificare le parole (usando la formula in colonna) che hanno più di 2 caratteri diversi dalla mia parola di riferimento?Dai un'occhiata alla tabella allegata, che dovrebbe darti un inizio. Il cuore di esso è una colonna formula (chiamata "Decisione" e indicata dal segno "+" nel pannello delle colonne della tabella). Cliccando sul '+' si ottiene:

È necessaria una certa conoscenza di JSL per capirlo e, se necessario, è possibile utilizzare "Aiuto > Indice di scripting" per capire esattamente come funziona.