Comment convertir le type de données de colonne de caractère en numérique sans perdre les valeurs numériques dans la colonneChers,
J'ai commencé avec JMP il y a quelques semaines !! C'est une question naïve.
J'essaie de convertir un type de données de colonne de caractère en numérique, mais je perds toutes les valeurs numériques de la colonne lors de la conversion du type de données en numérique.
Veuillez trouver les captures d'écran ci-jointes pour la même chose.
Comment conserver les valeurs numériques d'une colonne lorsque je change son type de données de caractère en numérique ??
Essayé en remplaçant les caractères à l'aide des commandes suivantes,
valeurs1 = dt:RequiredColumn<
Regex( :RequiredColumn, "[^0-9]", "", GLOBALREPLACE );
avec cela, toutes les valeurs numériques sont également remplacées.
Simplement, je voudrais conserver les valeurs numériques de la colonne (à l'origine dans le type de données Caractère). Essayé de rechercher ce problème dans notre communauté n'a pas pu obtenir d'informations pertinentes à ce sujet.
Image01 - OriginalColumnFormat - Capture d'écran du type de données d'origine de la colonne
Image02 - ColumnafterChangingDatatype - Capture d'écran de la colonne après avoir changé le type de données en numérique.
Merci d'avance...
Tableau de donnéesScriptles fenêtresRe : Comment convertir le type de données de colonne de caractère en numérique sans perdre les valeurs numériques dans la colonneIl existe probablement plusieurs façons d'accomplir ce que vous voulez et je parie que quelqu'un (par exemple, Jim) aura un script pour le rendre plus efficace, mais voici un flux de travail potentiel :
BTW, vos jpg ne nous permettent pas de voir à quoi ressemblent les colonnes de caractères que vous souhaitez modifier. S'il y a des caractères qui ne sont pas numériques, ceux-ci doivent être traités avant de changer le type de données.
1. Faites un clic droit sur la colonne et utilisez Recoder. Supprimez toutes les valeurs non numériques.
2. Ensuite, faites un clic droit et choisissez Informations sur la colonne. (comme les jpg). changez le type de données de caractère en numérique et le type de modélisation en continu.
Re : Comment convertir le type de données de colonne de caractère en numérique sans perdre les valeurs numériques dans la colonneJMP doit convertir toutes les valeurs qui sont des représentations correctes de valeurs numériques.Donc,
1.6.1, V1.6 doivent être convertis en une valeur manquante, car ce ne sont pas des valeurs numériques valides.
Cependant, -1.00, 5.00 et -15.000 doivent être convertis.
Pourriez-vous s'il vous plaît exécuter le script suivant pour voir s'il y a des caractères cachés dans vos données qui pourraient causer un problème.
show(:MeasuredValues[6],char to hex(:MeasuredValues[6]);
Le script affichera les valeurs hexadécimales de la valeur dans la 6ème ligne de votre table de données.Si le -1,00 n'est pas dans la 6e ligne, remplacez le 6 par le numéro de ligne pour l'une des lignes où la représentation des caractères semble être une valeur numérique valide, mais la cellule est remplacée par une valeur manquante.
Il serait également très utile si vous pouviez joindre un exemple de tableau de données contenant uniquement la colonne MeasuredValues.
Re : Comment convertir le type de données de colonne de caractère en numérique sans perdre les valeurs numériques dans la colonneCher homme d'état,
Merci pour votre réponse opportune.
J'ai essayé votre suggestion en supprimant les valeurs non numériques à l'aide de l'option Recode de la colonne et j'ai essayé de convertir le type de données des colonnes de caractère en numérique. Cependant, toutes les valeurs disparaissent comme avant lorsque le type de données est changé en numérique.
Veuillez trouver les captures d'écran ci-jointes pour la même chose.
Dans l'option de recodage, JMP a pu différencier les valeurs numériques et les caractères de chaîne.
Je publierai bientôt le résultat de la suggestion de M. JIM.
Merci..
Re : Comment convertir le type de données de colonne de caractère en numérique sans perdre les valeurs numériques dans la colonneCher Jim.
j'ai essayé d'exécuter le script pour le 6ème numéro de ligne avant de le convertir en numérique, le résultat est
:ValeursMesurées[6] = "-1.00" ;
Car à Hex(:MeasuredValues[6]) = "2D312E3030" ;
Après avoir converti le type de données de la colonne en numérique :
:ValeursMesurées[6] = .;
Car à Hex(:MeasuredValues[6]) = "FFFFD10000000000" ;
j'ai exécuté le script pour la deuxième ligne qui est convertie en une valeur numérique (passe à une valeur différente après la conversion), le résultat est
Avant conversion :
:ValeursMesurées[2] = "1.6.1" ;
Car à Hex(:MeasuredValues[2]) = "312E362E31" ;
Après conversion :
:ValeursMesurées[2] = 3061584000;
Car à Hex(:MeasuredValues[2]) = "41E6CF8210000000" ;
J'ai joint le tableau avec les données MeasuredValues.
Merci !!
Re : Comment convertir le type de données de colonne de caractère en numérique sans perdre les valeurs numériques dans la colonneConvertir la table que vous avez est "facile", mais en général ce type de conversion ne l'est pas. Il y a tellement de valeurs différentes que vous devrez prendre en compte. Ensuite, il y a un problème / une fonctionnalité avec la façon dont La fonction Num de JMP fonctionne. Vous trouverez ci-dessous une idée, mais cela laissera de côté de nombreux formats "numériques" différents, comme les durées, les dates, les heures, les pourcentages, les séparateurs de milliers, etc. De plus, il ne supprime que certains des caractères possibles qui ne sont pas liés aux nombres
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 : Comment convertir le type de données de colonne de caractère en numérique sans perdre les valeurs numériques dans la colonneMerci jthi !!
Cela a fait l'affaire...
Re : Comment convertir le type de données de colonne de caractère en numérique sans perdre les valeurs numériques dans la colonneIl semble que JMP ait un bogue dans la fonction Num().Chaînes de caractères du motif
"nnn"
doit toujours renvoyer une valeur manquante JMP, mais dans de nombreux cas, il renvoie une valeur numérique valide
Num( "9.4.333" )
Retour
-49554633600
Je ne trouve aucune note d'utilisation sur ce problème dans la documentation JMP (une recherche non exhaustive).J'envoie un rapport de bogue à l'équipe d'assistance JMP.