Ri: Sto cercando di reimpostare le colonne con un carattere ("<") su numerico e mantenere "<" in un'altra colonnaTabella allegata, per ogni evenienza.
Ri: Sto cercando di reimpostare le colonne con un carattere ("<") su numerico e mantenere "<" in un'altra colonnaQuesto potrebbe darti alcune idee su cosa potresti fare
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), "<", ""));
));
);
Cerca nell'indice degli script e nella guida agli script Substitute() per ulteriori informazioni su come può essere utilizzato
Ri: Sto cercando di reimpostare le colonne con un carattere ("<") su numerico e mantenere "<" in un'altra colonnaSostituisci semplicemente quella parte con un riferimento alla tua tabella. Potresti anche voler ripulire la selezione delle colonne se sai quale dovrebbe essere utilizzata (invece di usare semplicemente << get columnsname("String") per ottenere tutte le colonne).
Ri: Sto cercando di reimpostare le colonne con un carattere ("<") su numerico e mantenere "<" in un'altra colonnaSfortunatamente non sto seguendo il modo in cui quel codice si applica alla mia domanda originale.Probabilmente non ero chiaro nel mio post originale o mi manca qualcosa (sono un principiante di JSL).In ogni caso, continuerò a provare e potrebbe essere necessario riformulare la mia domanda.(A proposito, ho un numero molto elevato di colonne in gioco e tutte, tranne la colonna datetime, necessitano di questo trattamento: troppe per essere definite manualmente.) Grazie ancora.
Ri: Sto cercando di reimpostare le colonne con un carattere ("<") su numerico e mantenere "<" in un'altra colonnaDi seguito è riportato uno script che controlla < e eventuali valori Post Script come "J" o "UJ" ecc. e sposta i valori in una nuova colonna Qualificatore.Quindi converte la colonna da una colonna di caratteri a una colonna numerica

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 )
);
);
Sto cercando di reimpostare le colonne con un carattere ("<") su numerico e mantenere "<" in un'altra colonnaSalve, ho una tabella con colonne costituite da risultati di laboratorio (valori numerici) immessi come stringa di testo.Sono stringhe di testo perché alcune hanno un "<" davanti al valore numerico.Devo essere in grado di eseguire calcoli numerici sui valori, quindi sto provando a rimuovere il simbolo "<" e inserirlo in una nuova colonna denominata "ORIGCOLNAME_QUALIFIER" (dove ORIGCOLNAME è il nome della colonna da cui "< " i simboli sono stati rimossi).
Sfortunatamente, il codice seguente non funziona.
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 = <);
Ottengo il seguente messaggio:

Qualsiasi input sarebbe molto apprezzato.
Analisi e modellazione dei dati di baseOrganizzazione dei contenutiCombinazione e pulizia dei datiRi: Sto cercando di reimpostare le colonne con un carattere ("<") su numerico e mantenere "<" in un'altra colonnaGrazie jthi - La prima parte del tuo codice crea una nuova tabella a 2 righe con colonne prenominate.
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"} ) )
);
Tuttavia, sto cercando di mantenere intatti i nomi delle mie colonne mentre aggiungo una nuova colonna con il nome corrispondente a ciascuna delle mie colonne esistenti ma con "_qualifier" alla fine.(Es: supponiamo che le mie colonne esistenti siano cloruro (carattere), solfato (solfato), ..., le nuove colonne sarebbero cloruro (numerico), solfato (numerico), cloruro_qualificatore (carattere), solfato_qualificatore (carattere), ecc.
Ri: Sto cercando di reimpostare le colonne con un carattere ("<") su numerico e mantenere "<" in un'altra colonnaHa funzionato perfettamente.E le righe di commento sono molto utili perché mi aiuteranno a comprendere ogni passaggio del processo.Ciò aumenta ciò che posso trovare nella documentazione della guida mentre imparo come applicare effettivamente questi fondamenti jsl al mio set di dati.Grazie mille.
Ri: Sto cercando di reimpostare le colonne con un carattere ("<") su numerico e mantenere "<" in un'altra colonnaPotrei non capire la tua esigenza e probabilmente ci sono modi più efficienti per farlo, soprattutto se i tuoi dati hanno molte righe, ma ecco un metodo di forza bruta se questa tabella assomiglia al risultato che desideri.

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()
Ri: Sto cercando di reimpostare le colonne con un carattere ("<") su numerico e mantenere "<" in un'altra colonnaGrazie GZMorgan0!Mi dispiace, rispondo lentamente.Ho appena ricontrollato il thread.
Apprezzo vedere un'altra tecnica.