Recodificar columnas que contienen el valor de un carácter al final de una columnaHola,
Tengo una mesa como
| IDENTIFICACIÓN | Columna2 |
| ABC001235G | |
| ABC001234 | |
| ABC001235 | |
| ABC001234D | |
| ABC001234F | |
Me gustaría recodificar la columna de ID de modo que todos mis valores como 'ABC001234D' y 'ABC001234F' se conviertan en 'ABC001234'; básicamente, quiero eliminar esa última letra en la declaración. Sin embargo, no puedo hacer esto mediante un proceso manual. Hay demasiadas filas para hacer y no podría escribirlas manualmente para cada ID que se pueda usar en el script. Buscando una forma de hacer esto mediante secuencias de comandos. ¡Gracias!
AnalíticaTabla de datosRe: recodificar columnas que contienen valor de carácter al final de una columna¡Hola, cuerdo!
Aquí hay una fórmula que podría ayudarlo, pero tendrá que hacer algunas suposiciones sobre las convenciones de nomenclatura y la precisión de la variable ID.
Si los valores de su ID siempre tienen 3 caracteres al principio, puede crear una nueva columna y usar esta fórmula:
Substr (: ID, 1, 3) || Regex (: ID, "\ d +")
Esta fórmula permitirá una longitud inconsistente de valores numéricos.Tampoco es demasiado difícil adaptar la fórmula para tener números inconsistentes de caracteres al comienzo de los valores de ID.Pero si alguna vez alguien escribe mal el ID como 0 (el número) en lugar de O (la letra), o cualquier otro error tipográfico, puede obtener resultados inesperados.
Buena suerte,
Kevin
Re: recodificar columnas que contienen valor de carácter al final de una columnaPuede hacer esto con la siguiente fórmula:
val = Reverse( :ID );
While( Is Missing( Num( Substr( val, 1, 1 ) ) ),
val = Substr( val, 2 )
);
Reverse( val );
Esto eliminará todos los valores no numéricos finales
Re: recodificar columnas que contienen valor de carácter al final de una columnaPara esto, iría con expresiones regulares. Me gustó esto en un punto para comenzar con las expresiones regulares al menos en algún nivel: regexone también echa un vistazo Funciones de caracteres JMP - Regex y Regex del índice de secuencias de comandos.
Aquí hay un ejemplo con dos formas posibles de eliminar caracteres finales usando Regex en JMP (se pueden modificar fácilmente para admitir también letras no mayúsculas):
Names Default To Here(1);
dt = New Table("Untitled 3",
Add Rows(5),
Compress File When Saved(1),
New Column("ID",
Character,
"Nominal",
Set Values(
{"ABC001235G", "ABC001234", "ABC001235", "ABC001234D", "ABC001234F"}
)
)
);
dt << New Column("Regex1", Character, Nominal, Formula(Regex(:ID, "^[A-Z]+(\d+)")));
dt << New Column("Regex2", Character, Nominal, Formula(Regex(:ID, "[A-Z]*$", "", GLOBALREPLACE);));
Dependiendo del caso de uso, elija uno (fácil de probar con el código de ejemplo cómo funcionan con diferentes cadenas):
El primero coincidirá con 1 o más caracteres en mayúscula desde el principio de la cadena seguido de cualquier cantidad de dígitos (por lo que ignorará cualquier cosa después de los dígitos).
El segundo coincidirá con cero o más caracteres en mayúscula del final de la cadena y los reemplazará con una cadena vacía.