¿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 AAAA 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 diferencia de mi secuencia de referencia y tienen la misma longitud. Todavía soy un principiante en JMP y no sé si esto es posible de lograr. Avísame si tienes alguna sugerencia 
Tabla de datosRe: ¿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 debería darle un comienzo. 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 '+' da:

Necesita algún conocimiento de JSL para comprender esto, y puede usar 'Ayuda> Índice de secuencias de comandos' para averiguar exactamente cómo funciona si es necesario.
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), "")))
)
);
Column1 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?Hola, Ian,
Gracias por la respuesta. Traté de implementar la fórmula que escribiste, pero no entiendo dónde puedo definir que mi secuencia de referencia es AAAAAAA y no otra. Reemplacé el "" en la selección de elementos por "AAAAAAAA" pero el resultado no fue correcto. ¿Alguna sugerencia de 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?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 todas las combinaciones posibles 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?Parece que entendí mal lo que querías decir con " Quiero identificar en una columna adyacente las palabras que tienen más de 2 caracteres diferentes ". Lo que sugerí marcaría las filas en las que cada celda de la columna de origen contiene una cadena que a su vez se compone de 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?Necesitamos algunos ejemplos más. ¿Cuál es el número de diferencias para (no especifique demasiado, indique dónde no es importante).
ref = "AEIOUA" // tratando de entender la regla de la letra repetida
test = "AEIOUA" // nDiff = 0 para cadena idéntica
prueba = "AAEIOU" // nDiff = ? para las mismas letras, reordenado
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 coincidente
prueba = "AEIUOA" // dDiff = ? para letras internas intercambiadas
prueba = "AEIOUEIOU" // nDiff = ? por 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 que no sean "sí/no, hay más de 2 diferencias"? ¿Va a ser útil un conteo de diferencias?