¿Cómo identifico palabras (usando la fórmula en la columna) que tienen más de 2 caracteres diferentes de mi palabra de referencia?Hola a todos,
Tengo una columna compuesta por palabras que tienen una combinación de diferentes caracteres (es decir, AAAAAAAAAA - palabra con 10 caracteres). Quiero identificar en una columna adyacente las palabras que tienen más de 2 caracteres diferentes (ej. A B AAAAA CE AUTOMÓVIL CLUB BRITÁNICO). La posición en la que las letras son diferentes no importa y, además, algunas palabras también pueden ser más cortas o más largas que mi palabra de referencia.
Por lo tanto, quiero lograr una fórmula que me permita distinguir/identificar palabras que tienen menos/más de 2 caracteres diferentes de mi secuencia de referencia y tienen la misma longitud. Todavía soy un principiante en JMP y no sé si es posible lograrlo. Déjame saber si tienes alguna sugerencia 
Modelado estadístico avanzadoInvestigación de Consumidores y MercadosDiseño de experimentosRe: ¿Cómo identifico palabras (usando la fórmula en la columna) que tienen más de 2 caracteres diferentes de mi palabra de referencia?Gracias Jthi! Funciona muy bien 
Re: ¿Cómo identifico palabras (usando la fórmula en la columna) que tienen más de 2 caracteres diferentes de mi palabra de referencia?¡Gracias por información adicional! Consulte el script de edición más corto del índice de scripting:

Con eso es posible que puedas hacer algo, a menos que sea demasiado lento. Pat Match también podría hacer esto, pero (todavía) no he investigado cómo usarlo correctamente.
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;

Re: ¿Cómo identifico palabras (usando la fórmula en la columna) que tienen más de 2 caracteres diferentes de mi palabra de referencia?Hola Craige,
Gracias por ayudar. Tengo del 1 al 5e6 y solo una palabra de referencia. Básicamente quiero filtrar palabras que tienen más de 2 letras diferentes en comparación con una palabra de referencia y, por lo tanto, no necesito más de sí/no o 0/1 como respuesta. Repasando sus preguntas:
test = "AEIOUA" // nDiff = 0 para cadena idéntica
test = "AAEIOU" // nDiff = 1 - para las mismas letras, reordenadas.
- La primera A es sólo la que se mantiene en la misma posición. (5 letras diferentes)
test = "AEIOU" // nDiff = 1 para las mismas letras, falta una a la derecha
test = "EIOUA" // nDiff = 1 para las mismas letras, falta una a la izquierda
prueba = "EIOU" // nDiff = 1
prueba = "AA" // dDiff = 1
prueba = "AXA" // dDiff = 1
- La longitud no es la misma que la de AEIOUA. Para esto apliqué una función Len para filtrar esas palabras.
test = "AXXXXA" // dDiff = 1 para longitud coincidente
- La primera y la última A se mantienen en la misma posición. (4 letras diferentes)
prueba = "AEI UO A" // dDiff = 0 para letras internas intercambiadas
Sólo 2 letras diferentes de AEIOUA, por lo que pasará los criterios.
test = "AEIOUEIOU" // nDiff = 1 para letras repetidas
Secuencia larga. Eliminado usando Len.
Lo siento, no fui claro al explicar mi pregunta/problema. Recreé un ejemplo de lo que estoy buscando además de tus preguntas.
| Secuencia de referencia | FEBRERO |
| | |
| Lista de secuencias | Etiqueta: ¿más de 2 caracteres diferentes de la referencia? |
| FEB A UARIO | No |
| WAA RUARIO | Sí |
| YRAURBEF | Sí |
| FEBRERO R R R | No |
| FEBRERO W. | No |
| Y mi AURBEF | Sí |
| Y mi AUR Aria | Sí |
Re: ¿Cómo identifico palabras (usando la fórmula en la columna) que tienen más de 2 caracteres diferentes de mi palabra de referencia?Necesitamos algunos ejemplos más. ¿Cuál es el número de diferencias? (no especifique demasiado, indique dónde no es importante).
ref = "AEIOUA" // tratando de entender la regla para la letra repetida
test = "AEIOUA" // nDiff = 0 para cadena idéntica
prueba = "AAEIOU" // nDiff =? para las mismas letras, reordenadas
prueba = "AEIOU" // nDiff =? para las mismas letras, falta una a la derecha
prueba = "EIOUA" // nDiff =? para las mismas letras, falta una a la izquierda
prueba = "EIOU" // nDiff =?
prueba = "AA" // dDiff =?
prueba = "AXA" // dDiff = ?
prueba = "AXXXXA" // dDiff =? para longitud a juego
prueba = "AEIUOA" // dDiff = ? para letras internas intercambiadas
prueba = "AEIOUEIOU" // nDiff =? para letras repetidas
Estas respuestas ayudarían a elegir un algoritmo:
Dijiste ~1e6 palabras de prueba; ¿Cuántas palabras de referencia estás mirando?
¿Necesitará respuestas además de "sí/no, hay más de 2 diferencias"? ¿Será útil un recuento de diferencias?
Re: ¿Cómo identifico palabras (usando la fórmula en la columna) que tienen más de 2 caracteres diferentes de mi palabra de referencia?Parece que no entendí lo que quisiste decir con " Quiero identificar en una columna adyacente las palabras que tienen más de 2 caracteres diferentes ". Lo que sugerí sería marcar filas donde cada celda de la columna de origen contenga una cadena que a su vez esté compuesta por más de dos caracteres distintos (por lo que no hay una secuencia o cadena de referencia).
Re: ¿Cómo identifico palabras (usando la fórmula en la columna) que tienen más de 2 caracteres diferentes de mi palabra de referencia?Hola Jthi, gracias por la sugerencia.
Para ser honesto, todavía estoy tratando de entender la fórmula :'). En el archivo en el que estoy trabajando, solo tengo una palabra de referencia y tengo que filtrar más de un millón de entradas de fila con cada combinación posible de posición/letra. Supongo que esta fórmula no funcionaría porque no puedo definir esos valores en la fórmula. ¿Sería posible adaptarlo considerando una gran base de datos que tengo?
Re: ¿Cómo identifico palabras (usando la fórmula en la columna) que tienen más de 2 caracteres diferentes de mi palabra de referencia?Hola, Ian,
Gracias por la respuesta. Intenté implementar la fórmula que escribiste pero no sé dónde puedo definir que mi secuencia de referencia sea AAAAAAA y no otra cosa. Reemplacé "" en la selección de elementos por "AAAAAAAA" pero el resultado no fue correcto. ¿Alguna sugerencia sobre cómo puedo actualizar la fórmula que escribiste?
Re: ¿Cómo identifico palabras (usando la fórmula en la columna) que tienen más de 2 caracteres diferentes de mi palabra de referencia?Muchas maneras de hacer esto. Aquí hay una opción adicional:
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), "")))
)
);
La columna 1 es la columna con caracteres.
Formula(!Is Missing(Substitute(:Column 1, Left(:Column 1, 1), "")))
En este ejemplo simple, la idea es reemplazar todos los valores en la cadena encontrada desde la primera posición y si todavía quedan algunos caracteres, sabemos que había más de 1 carácter en la cadena. Si tiene más de un valor para reemplazar, debería poder usar la misma idea modificando los argumentos de la función Sustituir.
Re: ¿Cómo identifico palabras (usando la fórmula en la columna) que tienen más de 2 caracteres diferentes de mi palabra de referencia?Eche un vistazo a la tabla adjunta, que le permitirá empezar. El corazón de esto es una columna de fórmula (llamada 'Decisión' y denotada por el signo '+' en el panel de columnas de la tabla). Al hacer clic en el '+' se obtiene:

Necesita algunos conocimientos de JSL para comprender esto y puede usar 'Ayuda > Índice de secuencias de comandos' para descubrir exactamente cómo funciona si es necesario.