fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et de caractères mixtes)Salut
J'ai 2 colonnes, une contenant des valeurs numériques et une contenant des chaînes.
Je souhaite créer une troisième colonne qui prend la valeur numérique si la valeur de la chaîne est « paramétrique » et la valeur de la chaîne si elle ne l'est pas.
J'ai essayé ceci, mais j'obtiens une erreur "La colonne TEST_RESULT nécessite des valeurs numériques", bien qu'elle soit définie comme une colonne de type Caractère.
J'utilise JMP15 si cela compte.
col_test_result =dt <
<NEW column=""></NEW>
Later on I want to split this column so the output table will have either numeric or character type data, will JMP be able to set it to numeric based<BR />on the contents although the source column was character?
<BR /><BR />
<LINGO-LABS id="lingo-labs-536312" slang="en-US" mode="UPDATE">
<LINGO-LABEL>Modélisation statistique avancée</LINGO-LABEL>
<LINGO-LABEL>Organisation du contenu</LINGO-LABEL>
<LINGO-LABEL>Fusion et nettoyage des données</LINGO-LABEL>
<LINGO-LABEL>Personnalisation de masse</LINGO-LABEL>
<LINGO-LABEL>Ingénierie de la qualité et des procédés</LINGO-LABEL>
<LINGO-LABEL>Partage et communication des résultats</LINGO-LABEL>
</LINGO-LABS>
Re : fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et caractères mixtes)Vous devez utiliser la fonction Char() pour convertir les données numériques en caractères
col_test_result = dt << New Column( "TEST_RESULT", Character );
dt_subset:TEST_RESULT << set formula( If( :COMMENTS == "Parametric", Char( :NUMERIC_RESULT ), :COMMENTS ) );
Re : fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et caractères mixtes)Vous ne pouvez pas avoir des valeurs mixtes dans une colonne. Vous pouvez ajouter Char() autour de votre : NUMERIC_RESULT si ce sont des valeurs numériques
Column(dt_subset, "TEST_RESULT") << set formula(If(:COMMENTS == "Parametric", Char(:NUMERIC_RESULT), :COMMENTS));
Et lorsque vous divisez la colonne, définissez simplement le type de données sur ce que vous voulez. Notez que si vous avez des valeurs de caractères dans une colonne numérique, celles-ci seront remplacées par manquantes.
Re : fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et caractères mixtes)Merci ! l'ajout de 'char()' a résolu le premier problème.
Mais maintenant - j'ai 2 autres problèmes, après avoir divisé la colonne fusionnée.
Je le divise par une autre colonne, de sorte que les colonnes résultantes ont toutes un type de données (chaîne ou numérique), il y a environ 150 colonnes différentes.
Les problèmes :
1. Toutes les colonnes fractionnées sont toujours avec la formule d'origine de la colonne fusionnée. Comment puis-je faire de la colonne source une valeur (comme dans Excel - coller des valeurs spéciales).
2. Toutes les colonnes fractionnées sont générées en tant que type de caractère, et ce n'est pas ce que je voulais, je veux qu'elles aient un type automatique en fonction de leur contenu, tout comme
lorsque j'ouvre un fichier csv - JMP définit le type automatiquement, donc si toutes les valeurs d'une colonne sont numériques, elle obtiendra un type numérique.
Re : fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et caractères mixtes)Voici un petit morceau de code qui parcourra une table de données et convertira toute colonne de caractères composée de toutes les valeurs numériques valides en un type de données numériques.
Names Default To Here( 1 );
dt = Current Data Table();
For Each( {value, index}, dt << get column names( string ),
If( Column( value ) << get data type == "Character",
vals = Column( value ) << get values;
nonMissing = Col Number( As Column( value ) );
Column( value ) << set data type( numeric ) << modeling type( continuous );
If( nonMissing != Col Number( As Column( value ) ),
Column( value ) << set data type( character ) << set values( vals )
);
)
);Re : fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et caractères mixtes)Merci ! cela ressemble exactement à ce dont j'ai besoin, mais malheureusement cela ne fonctionne pas.
J'ai essayé de déboguer - la première ligne fonctionne - en obtenant la liste des noms de colonnes.
Le second obtient l'erreur ci-dessous. une idée?

Re : fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et caractères mixtes)Juste comme commentaire :
Ce n'est pas une restriction, mais c'est l'état d'esprit de base de JMP selon lequel chaque colonne a un type de données défini, que vous pouvez définir activement en fonction de vos besoins.
Le type de données, une fois défini correctement, rend les analyses suivantes si faciles à effectuer.
Re : fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et caractères mixtes)Je pense que vous utilisez < Version 16, vous devez donc utiliser la syntaxe std "For", voir
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// JMP16 "For Each"
dt << get column names( string );
For Each( {value, index}, dt << get column names( string ), Print( value ) );
// JMP <16 "For"
col_lst = dt << get column names( string );
For( i = 1, i <= N Items( col_lst ), i++,
Print( col_lst[i] )
);
Re : fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et caractères mixtes)
Merci ça marche maintenant !
maintenant juste une chose - comment puis-je me débarrasser de la formule originale ? Je veux juste la valeur résultante de la formule, est-ce possible ?
Re : fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et caractères mixtes)
bon genre de travail.. J'ai trouvé un problème. Il y avait une colonne avec le type de données 'char' qui avait un contenu de chaîne fixe : "R001"
après avoir exécuté le script, il passe au type numérique, avec la valeur '1'. Pourquoi cela se passe-t-il ?
Re : fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et caractères mixtes)Le R suivi d'une valeur entièrement numérique est interprété par JMP comme une devise.La notation du rand sud-africain se présente sous la forme : R123 ou R55,67, etc. JMP l'interprète donc comme des valeurs numériques.Vous pouvez ajouter une vérification au code pour vérifier cette exception.
Re : fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et caractères mixtes)
wow j'avais pas vu ça venir
Merci beaucoup pour votre aide!
Re : fusionner les valeurs de 2 colonnes en une seule (valeurs numériques et caractères mixtes)JMP 17 aura un argument facultatif pour num("R001", < ) pour empêcher ce comportement.