Re : J'essaie de réinitialiser les colonnes avec un caractère ("<") en numérique et de conserver le "<" dans une autre colonneTableau ci-joint, au cas où.
Re : J'essaie de réinitialiser les colonnes avec un caractère ("<") en numérique et de conserver le "<" dans une autre colonneCela pourrait donner quelques idées sur ce que vous pourriez faire
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(2),
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Set Values({"<1", "<3"})),
New Column("Column 2", Character, "Nominal", Set Values({"<2", "<4"}))
);
col_names = dt << Get Column Names("String");
For Each({col_name}, col_names,
dt << New Column(col_name ||"_Q", Numeric, Continuous, << Set Each Value(
Num(Substitute(AsColumn(dt, col_name), "<", ""));
));
);
Recherchez Substitute() dans l'index de script et le guide de script pour en savoir plus sur la façon dont il peut être utilisé.
Re : J'essaie de réinitialiser les colonnes avec un caractère ("<") en numérique et de conserver le "<" dans une autre colonneRemplacez simplement cette partie par une référence à votre table. Vous souhaiterez peut-être également nettoyer la sélection des colonnes si vous savez laquelle doit être utilisée (au lieu d'utiliser simplement << get column names("String") pour obtenir toutes les colonnes).
Re : J'essaie de réinitialiser les colonnes avec un caractère ("<") en numérique et de conserver le "<" dans une autre colonneMalheureusement, je ne comprends pas comment ce code s'applique à ma question initiale.Je n'ai probablement pas été clair dans mon message d'origine ou il me manque quelque chose (je suis un novice en JSL).Quoi qu'il en soit, je continuerai d'essayer et je devrai peut-être reformuler ma question.(Au fait, j'ai un très grand nombre de colonnes en jeu, et toutes, sauf la colonne datetime, ont besoin de ce traitement - beaucoup trop pour être définies à la main.) Merci encore.
Re : J'essaie de réinitialiser les colonnes avec un caractère ("<") en numérique et de conserver le "<" dans une autre colonneVous trouverez ci-dessous un script qui vérifie < et toutes les valeurs Post Script telles que "J" ou "UJ", etc., et déplace les valeurs vers une nouvelle colonne de qualificateur.Il convertit ensuite la colonne d'une colonne de caractères en une colonne numérique

Names Default To Here( 1 );
dt = Current Data Table();
colNames = dt << get column names( string, character );
For Each( {col, i}, colNames,
GTFound = "NO";
postScriptFound = "NO";
// Find rows that have < in them
theRows = dt << get rows where( Contains( As Column( dt, col ), "<" ) );
// If < is found then
// 1. Create a new column to hold the < in
// 2. Loop through the rows with < and
// 1. Add < to the appropriate row in the new Qualifier column
// 2. Delete the < from the current column
If( N Rows( theRows ) > 0,
GTFound = "YES";
dt << add Multiple Columns( col, 1, Character );
Column( dt, N Cols( dt ) ) << set name( col || "_QUALIFIER" );
dt << move selected column( after( As Column( col ) ) );
For Each( {fixRow, k}, theRows,
As Column( dt, col || "_QUALIFIER" )[fixRow] = "<";
As Column( dt, col )[fixRow] = Substr( Column( col )[fixRow], 2 );
);
);
// Find if there are any post script values on any of the rows
theRows = dt << get rows where( Word( 2, As Column( dt, col ), " " ) != "" );
// If found, then if a new column has not already been add, add the new Qualifer column
If( N Rows( theRows ) > 0,
postScriptFound = "YES";
If( GTFound == "NO",
dt << add Multiple Columns( col, 1, Character );
Column( dt, N Cols( dt ) ) << set name( col || "_QUALIFIER" );
dt << move selected column( after( As Column( col ) ) );
);
// Loop through the rows with post scripts and
// 1. Add the post scripts to the Qualifer column
// 2. Delete the post scripts from the current column
For Each( {fixRow, k}, theRows,
As Column( dt, col || "_QUALIFIER" )[fixRow] = Trim(
As Column( dt, col || "_QUALIFIER" )[fixRow] || " " || Word( 2, As Column( dt, col )[fixRow], " " )
);
As Column( dt, col )[fixRow] = Word( 1, As Column( dt, col )[fixRow], " " );
);
);
// If eiter < or Post Scripts were found, convert the column to numeric, continuous
If( GTFound == "YES" | postScriptFound == "YES",
Column( dt, col ) << data type( numeric ) << modeling type( continuous )
);
);
J'essaie de réinitialiser les colonnes avec un caractère ("<") en numérique et de conserver le "<" dans une autre colonneBonjour, j'ai un tableau avec des colonnes constituées de résultats de laboratoire (valeurs numériques) saisies sous forme de chaîne de texte.Il s'agit de chaînes de texte car certaines ont un "<" devant la valeur numérique.Je dois pouvoir effectuer des calculs numériques sur les valeurs, j'essaie donc de supprimer le symbole "<" et de le placer dans une nouvelle colonne nommée "ORIGCOLNAME_QUALIFIER" (où ORIGCOLNAME est le nom de la colonne à partir de laquelle le "< " les symboles ont été supprimés).
Malheureusement, le code ci-dessous ne fonctionne pas.
Names Default To Here( 1 );
dt = Current Data Table();
compList = {};
For( i = 1, i <= N Cols( dt ), i++,
colName = Column( dt, i ) << get name;
);
// Create the columns
For Each( {comp, i}, compList,
Eval(
Parse(
"dt << New Column( \!"" || compList[i] || "_QUALIFIER" ||
"\!",
character, nominal,
formula(
x=.;
if (comp << contains ("<"), x = <);
Je reçois le message suivant :

Toute contribution serait très appréciée.
Analyse et modélisation des données de baseOrganisation du contenuMélange et nettoyage des donnéesRe : J'essaie de réinitialiser les colonnes avec un caractère ("<") en numérique et de conserver le "<" dans une autre colonneMerci jthi - La première partie de votre code crée un nouveau tableau à 2 lignes avec des colonnes pré-nommées.
Names Default To Here( 1 );
dt = New Table( "Untitled",
Add Rows( 2 ),
Compress File When Saved( 1 ),
New Column( "Column 1", Character, "Nominal", Set Values( {"<1", "<3"} ) ),
New Column( "Column 2", Character, "Nominal", Set Values( {"<2", "<4"} ) )
);
Cependant, j'essaie de conserver les noms de mes colonnes intacts tout en ajoutant une nouvelle colonne dont le nom correspond à chacune de mes colonnes existantes mais avec "_qualifier" à la fin.(Ex : disons que mes colonnes existantes sont chlorure (caractère), sulfate (sulfate), ..., les nouvelles colonnes seraient chlorure (numérique), sulfate (numérique), chlorure_qualifier (caractère), sulfate_qualifier (caractère), etc.
Re : J'essaie de réinitialiser les colonnes avec un caractère ("<") en numérique et de conserver le "<" dans une autre colonneCela a parfaitement fonctionné.Et les lignes de commentaires sont très utiles car elles m'aideront à comprendre chaque étape du processus.Cela augmente ce que je peux trouver dans la documentation d'aide à mesure que j'apprends comment appliquer réellement ces principes fondamentaux de JSL à mon ensemble de données.Merci beaucoup.
Re : J'essaie de réinitialiser les colonnes avec un caractère ("<") en numérique et de conserver le "<" dans une autre colonneJe ne comprends peut-être pas votre besoin, et il existe probablement des moyens plus efficaces de le faire, surtout si vos données comportent de nombreuses lignes, mais voici une méthode par force brute si ce tableau ressemble au résultat souhaité.

Names Default To Here(1);
id_colnames = {"well", "Sample Date"};
dt = Current Data Table();
nr =nrow(dt);
col_names = dt << Get Column Names("String");
For Each({col_name}, col_names,
If( !Contains(id_colnames, col_name),
dt << New Column(col_name||"_Q", Character, << Set Each Value(
If(Contains(AsColumn(dt,col_name), "<"), "<",""))
);
curr_col = column(dt,col_name);
For(i=1, i<=nr, i++,
curr_col[i]= Substitute( word(1, curr_col[i]) ,"<","");
);
curr_col << Set Data Type(Numeric) << Set Modeling Type ("Continuous");
); // end If()
); //end For Each()
Re : J'essaie de réinitialiser les colonnes avec un caractère ("<") en numérique et de conserver le "<" dans une autre colonneMerci GZMorngan0 !Désolé, je réponds lentement.Je viens de revenir sur le fil.
J'apprécie de voir une autre technique.