Come convertire il tipo di dati della colonna da carattere in numerico senza perdere i valori numerici nella colonnacari,
Ho iniziato con JMP poche settimane fa!! È una domanda ingenua.
Sto cercando di convertire un tipo di dati di colonna da carattere a numerico, tuttavia sto perdendo tutti i valori numerici dalla colonna durante la conversione del tipo di dati in numerico.
Si prega di trovare gli screenshot allegati per lo stesso.
Come conservare i valori numerici di una colonna quando cambio il tipo di dati da Carattere a Numerico??
Provato sostituendo i caratteri usando i seguenti comandi,
values1 = dt:RequiredColumn<
Regex( :RequiredColumn, "[^0-9]", "", GLOBALREPLACE );
con questo vengono sostituiti anche tutti i valori numerici.
Semplicemente vorrei mantenere i valori numerici dalla colonna (originariamente nel tipo di dati carattere). Ho provato a cercare questo problema nella nostra comunità e non sono riuscito a ottenere alcuna informazione rilevante al riguardo.
Picture01 - OriginalColumnFormat - Screenshot del tipo di dati originale della colonna
Picture02 - ColumnafterChangingDatatype- Screenshot della colonna dopo aver modificato il tipo di dati in numerico.
Grazie in anticipo...

Modellazione statistica avanzataAccesso ai datiMiscelazione e pulizia dei datiPersonalizzazione di massaQualità e ingegneria di processofinestreRi: Come convertire il tipo di dati della colonna da carattere in numerico senza perdere i valori numerici nella colonnaSaluti a tutti. Un aggiornamento per te: sembra che sia stato svolto del lavoro per questo problema nell'arco di tempo di JMP 17. Nello specifico, è stato aggiunto un ulteriore argomento a Num() e Informat() per aiutarti a controllare ciò che è considerato un numero valido. Tutti gli utenti di JMP 17 EA7 (o versioni successive) possono provarlo ora; altri dovranno attendere fino a quando JMP 17 non sarà disponibile nell'autunno del 2022. Grazie per aver segnalato questo! Monitoriamo questi forum e cerchiamo di risolvere cose come questa quando possibile.
Ri: Come convertire il tipo di dati della colonna da carattere in numerico senza perdere i valori numerici nella colonnaPotrebbe essere che JMP la interpreti come una data e poiché tale data è precedente al 01.01.1904 (che è l'ora di inizio del datetime di JMP) è negativa.
Names Default To Here(1);
a = Num("9.4.333");
b = Num("31.12.1903");
c = Num("1.12.1903");
Show(a, b, c);
Dopo questa discussione in comunità su come si comporta Num() Ho usato i miei validatori per controllare i valori numerici, questo è un esempio:
Names Default To Here(1);
num_validator = Function({str}, {Default Local},
regex_validator_string = "^[-\+]{0,1}[0-9\.\,]+$";
If(Is Missing(Regex(str, regex_validator_string)),
retval = .; //use missing as non match due to num returning . in case of non-numeric
, //else
retval = Num(str)
);
return(retval);
);Ri: Come convertire il tipo di dati della colonna da carattere in numerico senza perdere i valori numerici nella colonnaGrazie per il tuo tempo prezioso nell'indagare su questo problema Jim !!
Ri: Come convertire il tipo di dati della colonna da carattere in numerico senza perdere i valori numerici nella colonnaSembra che JMP abbia un bug nella funzione Num().Stringhe di caratteri del motivo
"nnn"
dovrebbe sempre restituire un valore JMP mancante, tuttavia in molti casi restituisce un valore numerico valido
Num( "9.4.333" )
ritorna
-49554633600
Non riesco a trovare alcuna nota di utilizzo su questo problema nella documentazione JMP (una ricerca non esaustiva).Sto inviando una segnalazione di bug al team di supporto di JMP.
Ri: Come convertire il tipo di dati della colonna da carattere in numerico senza perdere i valori numerici nella colonnaGrazie Jthi!!
Questo ha fatto il lavoro...
Ri: Come convertire il tipo di dati della colonna da carattere in numerico senza perdere i valori numerici nella colonnaConvertire la tabella che hai è "facile", ma in generale questo tipo di conversione non lo è. Ci sono così tanti valori diversi che dovrai prendere in considerazione. Quindi c'è un problema/caratteristica con come La funzione Num di JMP funziona. Di seguito c'è un'idea, ma questo lascerà comunque fuori molti diversi formati "numerici", come durate, date, orari, percentuali, separatori di migliaia e così via. Inoltre rimuove solo alcuni dei possibili caratteri che non sono correlati ai numeri
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))
));
Ri: Come convertire il tipo di dati della colonna da carattere in numerico senza perdere i valori numerici nella colonnaCaro Jim.
ho provato a eseguire lo script per il numero della sesta riga prima di convertirlo in numerico, il risultato è
:ValoriMisurati[6] = "-1.00";
Da carattere a esadecimale(:Valorimisurati[6]) = "2D312E3030";
Dopo aver convertito il tipo di dati della colonna in numerico:
:ValoriMisurati[6] = .;
Da carattere a esadecimale(:Valorimisurati[6]) = "FFFFD10000000000";
ho eseguito lo script per la seconda riga che viene convertita in un valore numerico (cambia in un valore diverso dopo la conversione), il risultato è
Prima della conversione:
:ValoriMisurati[2] = "1.6.1";
Char To Hex(:MeasuredValues[2]) = "312E362E31";
Dopo la conversione:
:ValoriMisurati[2] = 3061584000;
Da carattere a esadecimale(:Valorimisurati[2]) = "41E6CF8210000000";
Ho allegato la tabella con i dati MeasuredValues.
Grazie !!
Ri: Come convertire il tipo di dati della colonna da carattere in numerico senza perdere i valori numerici nella colonnaCaro statista,
Grazie per la tua tempestiva risposta.
Ho provato il tuo suggerimento rimuovendo i valori non numerici utilizzando l'opzione Ricodifica dalla colonna e ho provato a convertire il tipo di dati delle colonne da carattere a numerico. Tuttavia, tutti i valori continuano a scomparire come prima quando il tipo di dati viene modificato in Numerico.
Si prega di trovare gli screenshot allegati per lo stesso.
Nell'opzione di ricodifica, JMP è stato in grado di differenziare valori numerici e caratteri stringa.
Pubblicherò presto il risultato del suggerimento di Mr. JIM.
Grazie..
Ri: Come convertire il tipo di dati della colonna da carattere in numerico senza perdere i valori numerici nella colonnaJMP dovrebbe convertire tutti i valori che sono rappresentazioni corrette di valori numerici.Perciò,
1.6.1, V1.6 devono essere convertiti in un valore mancante, poiché non sono valori numerici validi.
Tuttavia, -1.00, 5.00 e -15.000 dovrebbero essere convertiti.
Potresti eseguire il seguente script per vedere se ci sono caratteri nascosti nei tuoi dati che potrebbero causare un problema.
show(:MeasuredValues[6],char to hex(:MeasuredValues[6]);
Lo script visualizzerà i valori esadecimali per il valore nella sesta riga della tabella di dati.Se -1.00 non è nella sesta riga, cambia il 6 nel numero di riga per una delle righe in cui la rappresentazione del carattere sembra essere un valore numerico valido, ma la cella viene modificata in un valore mancante.
Sarebbe anche molto utile se potessi allegare una tabella di dati di esempio che contiene solo la colonna MeasuredValues.
Ri: Come convertire il tipo di dati della colonna da carattere in numerico senza perdere i valori numerici nella colonnaProbabilmente ci sono diversi modi per realizzare ciò che vuoi e scommetto che qualcuno (ad esempio, Jim) avrà uno script per renderlo più efficiente, ma ecco un potenziale flusso di lavoro:
A proposito, i tuoi jpg non ci permettono di vedere come appaiono le colonne dei caratteri che vuoi cambiare. Se sono presenti caratteri che non sono numerici, è necessario gestirli prima di modificare il tipo di dati.
1. Fare clic con il tasto destro sulla colonna e utilizzare Ricodifica. Rimuovi tutti i valori non numerici.
2. Quindi, fai clic con il pulsante destro del mouse e scegli Informazioni sulla colonna. (come i jpg). modificare il tipo di dati da carattere a numerico e il tipo di modellazione a continuo.