unione di valori da 2 colonne in una (valori numerici e caratteri misti)CIAO
Ho 2 colonne, una contenente valori numerici e una contenente stringhe.
Voglio creare una terza colonna che accetti il valore numerico se il valore stringa è "parametrico" e il valore stringa in caso contrario.
Ho provato, ma ricevo un errore "La colonna TEST_RESULT richiede valori numerici", nonostante sia definita come colonna di tipo Carattere.
Se può servire, uso JMP15.
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>Modellazione statistica avanzata</LINGO-LABEL>
<LINGO-LABEL>Organizzazione dei contenuti</LINGO-LABEL>
<LINGO-LABEL>Combinazione e pulizia dei dati</LINGO-LABEL>
<LINGO-LABEL>Personalizzazione di massa</LINGO-LABEL>
<LINGO-LABEL>Ingegneria della qualità e dei processi</LINGO-LABEL>
<LINGO-LABEL>Condivisione e comunicazione dei risultati</LINGO-LABEL>
</LINGO-LABS>
Re: fusione di valori da 2 colonne in una (valori misti numerici e caratteri)È necessario utilizzare la funzione Char() per convertire i dati numerici in caratteri
col_test_result = dt << New Column( "TEST_RESULT", Character );
dt_subset:TEST_RESULT << set formula( If( :COMMENTS == "Parametric", Char( :NUMERIC_RESULT ), :COMMENTS ) );
Re: fusione di valori da 2 colonne in una (valori misti numerici e caratteri)Non puoi avere valori misti in una colonna. Puoi aggiungere Char() intorno al tuo :NUMERIC_RESULT se quelli sono valori numerici
Column(dt_subset, "TEST_RESULT") << set formula(If(:COMMENTS == "Parametric", Char(:NUMERIC_RESULT), :COMMENTS));
E quando dividi la colonna, imposta semplicemente il tipo di dati su ciò che desideri. Tieni presente che se hai valori di caratteri nella colonna numerica, quelli verranno modificati in mancanti.
Re: fusione di valori da 2 colonne in una (valori misti numerici e caratteri)Grazie ! l'aggiunta di 'char()' ha risolto il primo problema.
Ma ora - ho altri 2 problemi, dopo aver diviso la colonna unita.
Lo sto dividendo per un'altra colonna, quindi le colonne risultanti hanno tutte un tipo di dati (stringa o numerici), ci sono circa 150 colonne diverse.
I problemi :
1. Tutte le colonne divise sono ancora con la formula originale dalla colonna unita. Come faccio a rendere la colonna di origine un valore (come in excel - incolla speical, valori).
2. Tutte le colonne divise vengono generate come tipo di carattere e non è quello che volevo, voglio che ottengano un tipo automatico in base al loro contenuto, proprio come
quando apro un file CSV - JMP imposta automaticamente il tipo, quindi se tutti i valori in una colonna sono numerici, otterrà il tipo numerico.
Re: fusione di valori da 2 colonne in una (valori misti numerici e caratteri)Ecco un piccolo pezzo di codice che passerà attraverso una tabella di dati e convertirà qualsiasi colonna di caratteri composta da tutti i valori numerici validi, in un tipo di dati numerico;
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: fusione di valori da 2 colonne in una (valori misti numerici e caratteri)Grazie ! sembra esattamente quello di cui ho bisogno, ma sfortunatamente non funziona.
Ho provato a eseguire il debug - la prima riga funziona - ottenendo l'elenco dei nomi delle colonne.
Il secondo ottiene l'errore di seguito. qualche idea?

Re: fusione di valori da 2 colonne in una (valori misti numerici e caratteri)Giusto come commento:
Non è una restrizione, ma è la mentalità di base di JMP che ogni colonna abbia un tipo di dati definito, che puoi impostare attivamente in base alle tue esigenze.
Il tipo di dati, una volta impostato correttamente, rende le analisi successive così facili da eseguire.
Re: fusione di valori da 2 colonne in una (valori misti numerici e caratteri)Penso che tu stia usando
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: fusione di valori da 2 colonne in una (valori misti numerici e caratteri)
Grazie ora funziona!
ora solo una cosa: come faccio a sbarazzarmi della formula originale? Voglio solo il valore risultante della formula, è possibile?
Re: fusione di valori da 2 colonne in una (valori misti numerici e caratteri)
bene che funziona.. Ho trovato un problema. C'era una colonna con tipo di dati 'char' che aveva un contenuto di stringa fisso: "R001"
dopo aver eseguito lo script cambia in tipo numerico, con valore '1'. Perché sta succedendo?
Re: fusione di valori da 2 colonne in una (valori misti numerici e caratteri)La R seguita da un valore tutto numerico viene interpretata da JMP come valuta.La notazione del Rand sudafricano è nella forma: R123 o R55.67 ecc. Quindi JMP la interpreta come valori numerici.È possibile aggiungere un controllo al codice per verificare questa eccezione.
Re: fusione di valori da 2 colonne in una (valori misti numerici e caratteri)
wow non me l'aspettavo
Grazie mille per il vostro aiuto!
Re: fusione di valori da 2 colonne in una (valori misti numerici e caratteri)JMP 17 avrà un argomento facoltativo per num("R001", < ) per prevenire questo comportamento.