Cómo convertir el tipo de datos de columna de carácter a numérico sin perder valores numéricos en la columnaQueridos,
¡Empecé con JMP hace unas semanas! Es una pregunta ingenua.
Estoy tratando de convertir un tipo de datos de columna de carácter a numérico, sin embargo, estoy perdiendo todos los valores numéricos de la columna al convertir el tipo de datos a numérico.
Encuentre las capturas de pantalla adjuntas para el mismo.
¿Cómo retener los valores numéricos de una columna cuando cambio su tipo de datos de Carácter a Numérico?
Intenté reemplazando los caracteres usando los siguientes comandos,
valores1 = dt:RequiredColumn<
Regex( :RequiredColumn, "[^0-9]", "", GLOBALREPLACE );
con esto también se reemplazan todos los valores numéricos.
Simplemente me gustaría conservar los valores numéricos de la columna (originalmente en el tipo de datos Carácter). Intenté buscar este problema en nuestra comunidad y no pude obtener ninguna información relevante al respecto.
Picture01 - OriginalColumnFormat - Captura de pantalla del tipo de datos original de la columna
Picture02 - ColumnafterChangingDatatype: captura de pantalla de la columna después de cambiar el tipo de datos a numérico.
Gracias de antemano...

Modelado Estadístico AvanzadoAcceso a los datosFusión y limpieza de datosLa personalización en masaIngeniería de Calidad y ProcesosventanasRe: Cómo convertir el tipo de datos de columna de carácter a numérico sin perder valores numéricos en la columnaSaludos a todos. Una actualización para usted: parece que se ha trabajado para este problema en el marco de tiempo de JMP 17. Específicamente, se agregó un argumento adicional a Num() e Informat() para ayudarlo a controlar lo que se considera un número válido. Cualquier usuario de JMP 17 EA7 (o posterior) puede probar esto ahora; otros deberán esperar hasta que JMP 17 esté disponible en el otoño de 2022. ¡Gracias por informar esto! Monitoreamos estos foros y buscamos arreglar cosas como esta cuando sea posible.
Re: Cómo convertir el tipo de datos de columna de carácter a numérico sin perder valores numéricos en la columna¿Podría ser que JMP esté interpretando eso como una fecha y debido a que esa fecha es anterior al 01.01.1904 (que es la hora de inicio de la fecha y hora de JMP) es negativa?
Names Default To Here(1);
a = Num("9.4.333");
b = Num("31.12.1903");
c = Num("1.12.1903");
Show(a, b, c);
Después de esta discusión en comunidad sobre cómo se comporta Num() He usado mis propios validadores para verificar valores numéricos, este es un ejemplo:
Names Default To Here(1);
num_validator = Function({str}, {Default Local},
regex_validator_string = "^[-\+]{0,1}[0-9\.\,]+$";
If(Is Missing(Regex(str, regex_validator_string)),
retval = .; //use missing as non match due to num returning . in case of non-numeric
, //else
retval = Num(str)
);
return(retval);
);Re: Cómo convertir el tipo de datos de columna de carácter a numérico sin perder valores numéricos en la columna¡Gracias por tu tiempo válido para investigar este problema, Jim!
Re: Cómo convertir el tipo de datos de columna de carácter a numérico sin perder valores numéricos en la columnaParece que JMP tiene un error en la función Num().Cadenas de caracteres del patrón
"nnn"
siempre debe devolver un valor faltante de JMP; sin embargo, en muchos casos, devuelve un valor numérico válido
Num( "9.4.333" )
devoluciones
-49554633600
No puedo encontrar ninguna nota de uso sobre este tema en la documentación de JMP (una búsqueda no exhaustiva).Estoy enviando un informe de error al equipo de soporte de JMP.
Re: Cómo convertir el tipo de datos de columna de carácter a numérico sin perder valores numéricos en la columnaGracias jti!!
Eso hizo el trabajo...
Re: Cómo convertir el tipo de datos de columna de carácter a numérico sin perder valores numéricos en la columnaConvertir la tabla que tiene es "fácil", pero en general este tipo de conversión no lo es. Hay tantos valores diferentes que tendrá que tener en cuenta. Entonces hay un problema/característica con cómo La función Num de JMP funciona. A continuación se muestra una idea, pero aún dejará de lado muchos formatos "numéricos" diferentes, como duraciones, fechas, horas, porcentajes, separadores de miles, etc. Además, solo elimina algunos de los posibles caracteres que no están relacionados con los números.
Names Default To Here(1);
dt = Current Data Table();
//remove alphabetical characters, should also remove some special characters
regex_one = "[a-zA-Z\s]";
dt << New Column("no_alph", Character, Nominal, << Set Each Value(
Regex(:MeasuredValues, regex_one, "", GLOBALREPLACE);
));
regex_two = "^-?[0-9]+\.?[0-9]*$";
dt << New Column("nums", Numeric, Nominal, << Set Each Value(
Num(Regex(:no_alph, regex_two))
));
Re: Cómo convertir el tipo de datos de columna de carácter a numérico sin perder valores numéricos en la columnaQuerido Jim.
Traté de ejecutar el script para el número de la sexta fila antes de convertirlo a numérico, el resultado es
:ValoresMedidos[6] = "-1.00";
Char a hexadecimal (: valores medidos [6]) = "2D312E3030";
Después de convertir el tipo de datos de la columna a numérico:
:ValoresMedidos[6] = .;
Char To Hex(:MeasuredValues[6]) = "FFFFD10000000000";
ejecuté el script para la segunda fila que se está convirtiendo a un valor numérico (cambia a un valor diferente después de la conversión), el resultado es
Antes de la conversión:
:ValoresMedidos[2] = "1.6.1";
Char a hexadecimal (: valores medidos [2]) = "312E362E31";
Después de la conversión:
:Valores medidos[2] = 3061584000;
Char a hexadecimal (: valores medidos [2]) = "41E6CF8210000000";
Adjunto la tabla con los datos de MeasuredValues.
Gracias !!
Re: Cómo convertir el tipo de datos de columna de carácter a numérico sin perder valores numéricos en la columnaEstimado estadista,
Gracias por su respuesta oportuna.
Intenté su sugerencia eliminando valores no numéricos usando la opción Recodificar de la columna e intenté convertir el tipo de datos de las columnas de carácter a Numérico. Sin embargo, todos los valores siguen desapareciendo como antes cuando el tipo de datos se cambia a Numérico.
Encuentre las capturas de pantalla adjuntas para el mismo.
En la opción de grabación, JMP pudo diferenciar valores numéricos y caracteres de cadena.
Publicaré el resultado de la sugerencia del Sr. JIM pronto.
Gracias..
Re: Cómo convertir el tipo de datos de columna de carácter a numérico sin perder valores numéricos en la columnaJMP debe convertir todos los valores que son representaciones adecuadas de valores numéricos.Por lo tanto,
1.6.1, V1.6 debe convertirse a un valor faltante, ya que no son valores numéricos válidos.
Sin embargo, se deben convertir -1,00, 5,00 y -15,000.
¿Podría ejecutar el siguiente script para ver si hay caracteres ocultos en sus datos que podrían estar causando un problema?
show(:MeasuredValues[6],char to hex(:MeasuredValues[6]);
El script mostrará los valores hexadecimales para el valor en la sexta fila de su tabla de datos.Si el -1.00 no está en la sexta fila, cambie el 6 por el número de fila de una de las filas donde la representación del carácter parece ser un valor numérico válido, pero la celda se cambia a un valor faltante.
También sería muy útil si pudiera adjuntar una tabla de datos de muestra que contenga solo la columna de valores medidos.
Re: Cómo convertir el tipo de datos de columna de carácter a numérico sin perder valores numéricos en la columnaEs probable que haya varias formas de lograr lo que desea y apuesto a que alguien (p. ej., Jim) tendrá un script para hacerlo más eficiente, pero aquí hay un flujo de trabajo potencial:
Por cierto, sus jpg no nos permiten ver qué columnas de caracteres desea cambiar. Si hay caracteres que no son numéricos, es necesario tratarlos antes de cambiar el tipo de datos.
1. Haga clic derecho en la columna y use Recodificar. Elimina todos los valores no numéricos.
2. Luego, haga clic derecho y elija Información de columna. (como los jpg). cambie el tipo de datos de carácter a numérico y el tipo de modelado a continuo.