Betreff: Ich versuche, Spalten mit einem Zeichen („<“) auf numerisch zurückzusetzen und das „<“ in einer anderen Spalte beizubehaltenTabelle beigefügt, nur für den Fall.
Betreff: Ich versuche, Spalten mit einem Zeichen („<“) auf numerisch zurückzusetzen und das „<“ in einer anderen Spalte beizubehaltenDies könnte einige Ideen liefern, was Sie tun könnten
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), "<", ""));
));
);
Durchsuchen Sie den Scripting Index und den Scripting Guide nach Substitute(), um mehr darüber zu erfahren, wie es verwendet werden kann
Betreff: Ich versuche, Spalten mit einem Zeichen („<“) auf numerisch zurückzusetzen und das „<“ in einer anderen Spalte beizubehaltenErsetzen Sie diesen Teil einfach durch einen Verweis auf Ihre Tabelle. Möglicherweise möchten Sie auch die Spaltenauswahl bereinigen, wenn Sie wissen, welche verwendet werden sollen (anstatt nur << get Column Names("String") zu verwenden, um alle Spalten abzurufen).
Betreff: Ich versuche, Spalten mit einem Zeichen („<“) auf numerisch zurückzusetzen und das „<“ in einer anderen Spalte beizubehaltenLeider verstehe ich nicht, wie dieser Code auf meine ursprüngliche Frage zutrifft.Ich habe mich in meinem ursprünglichen Beitrag wahrscheinlich nicht klar ausgedrückt oder etwas übersehen (ich bin ein JSL-Neuling).Auf jeden Fall werde ich es weiter versuchen und muss meine Frage möglicherweise neu formulieren.(Übrigens habe ich eine sehr große Anzahl von Spalten im Spiel, und alle außer der Datetime-Spalte benötigen diese Behandlung – viel zu viele, um sie manuell zu definieren.) Nochmals vielen Dank.
Betreff: Ich versuche, Spalten mit einem Zeichen („<“) auf numerisch zurückzusetzen und das „<“ in einer anderen Spalte beizubehaltenUnten sehen Sie ein Skript, das nach < und Post-Script-Werten wie „J“ oder „UJ“ usw. sucht und die Werte in eine neue Qualifier-Spalte verschiebt.Anschließend wird die Spalte von einer Zeichenspalte in eine numerische Spalte konvertiert

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 )
);
);
Ich versuche, Spalten mit einem Zeichen („<“) auf numerisch zurückzusetzen und das „<“ in einer anderen Spalte beizubehaltenHallo, ich habe eine Tabelle mit Spalten, die aus Laborergebnissen (numerischen Werten) bestehen, die als Textzeichenfolge eingegeben wurden.Es handelt sich um Textzeichenfolgen, da einige ein „<“ vor dem numerischen Wert haben.Ich muss in der Lage sein, numerische Berechnungen für die Werte durchzuführen, also versuche ich, das „<“-Symbol zu entfernen und es in einer neuen Spalte mit dem Namen „ORIGCOLNAME_QUALIFIER“ zu platzieren (wobei ORIGCOLNAME der Name der Spalte ist, aus der das „<“ stammt " Symbole wurden entfernt).
Leider funktioniert der folgende Code nicht.
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 = <);
Ich erhalte folgende Meldung:

Jede Eingabe wäre sehr dankbar.
Grundlegende Datenanalyse und ModellierungInhaltsorganisationDatenmischung und -bereinigungBetreff: Ich versuche, Spalten mit einem Zeichen („<“) auf numerisch zurückzusetzen und das „<“ in einer anderen Spalte beizubehaltenDanke jthi – Der erste Teil Ihres Codes erstellt eine neue zweizeilige Tabelle mit vorbenannten Spalten.
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"} ) )
);
Ich versuche jedoch, meine Spaltennamen beizubehalten, während ich eine neue Spalte hinzufüge, deren Name jeder meiner vorhandenen Spalten entspricht, aber am Ende „_qualifier“ enthält.(Beispiel: Angenommen, meine vorhandenen Spalten sind „Chlorid“ (Zeichen), „Sulfat“ (Sulfat), ..., die neuen Spalten wären „Chlorid (numerisch), Sulfat (numerisch), „chlorid_qualifier“ (Zeichen), „sulfat_qualifier“ (Zeichen) usw.
Betreff: Ich versuche, Spalten mit einem Zeichen („<“) auf numerisch zurückzusetzen und das „<“ in einer anderen Spalte beizubehaltenDas hat perfekt funktioniert.Und die Kommentarzeilen sind äußerst hilfreich, da sie mir helfen, jeden Schritt im Prozess zu verstehen.Dies erweitert das, was ich in der Hilfedokumentation finden kann, wenn ich lerne, wie ich diese JSL-Grundlagen tatsächlich auf meinen Datensatz anwenden kann.Vielen Dank.
Betreff: Ich versuche, Spalten mit einem Zeichen („<“) auf numerisch zurückzusetzen und das „<“ in einer anderen Spalte beizubehaltenIch verstehe Ihren Bedarf vielleicht nicht und es gibt wahrscheinlich effizientere Möglichkeiten, dies zu tun, insbesondere wenn Ihre Daten viele Zeilen haben, aber hier ist eine Brute-Force-Methode, wenn diese Tabelle wie das gewünschte Ergebnis aussieht.

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()
Betreff: Ich versuche, Spalten mit einem Zeichen („<“) auf numerisch zurückzusetzen und das „<“ in einer anderen Spalte beizubehaltenDanke GZMorngan0!Tut mir leid, dass ich langsam antworte.Ich habe den Thread gerade noch einmal durchgesehen.
Ich schätze es, eine andere Technik zu sehen.