Come posso dividere il testo di una colonna in più colonne?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />A volte ho un set di dati con informazioni in una colonna che vorrei suddividere su più colonne. Ad esempio, nell'immagine 1 di seguito ho quattro identificatori raggruppati in una colonna che vorrei dividere in quattro colonne. Voglio che il numero di lotto (11), l'identificatore di testo (DAT), il numero di campione (001.002 ecc.) e il tipo di file (.tif) siano tutti suddivisi in singole colonne (come mostrato nell'immagine 2). Qual è il modo migliore per farlo nell'editor di formule o utilizzando JSL. Ho allegato un file di dati di esempio.
Ciò che ho:
Immagine 1

Cosa voglio avere:
Immagine 2

Ri: Come posso dividere il testo di una colonna in più colonne?Puoi fornire alcuni dati di esempio con i risultati prima e dopo la suddivisione e l'impilamento?
Ri: Come posso dividere il testo di una colonna in più colonne?Ciao Jeff,
Questa funzione "dividi" e "impila" in JMP è davvero interessante. Non suppongo che tu conosca l'equivalente SQL o un modo per farlo in SQL? Se non è un consiglio che dai, va bene. Risparmiami semplicemente guardando le schede SQL.
Ri: Come posso dividere il testo di una colonna in più colonne?Esamina la funzione "Testo in colonne" e la funzione Word() per ottenere ciò che stai chiedendo
Ri: Come posso dividere il testo di una colonna in più colonne?CIAO,
Sto solo lavorando su un'estensione della funzionalità test alle colonne. Ho una stringa ACE_100_bb_29_icfg2 in una colonna denominata codice articolo. Esiste un modo per separare questo testo con _ e quindi avere solo i primi 3 caratteri (ABC) nel codice articolo della colonna.
Il modo in cui lo sto facendo ora è eliminare tutte le altre colonne prodotte da questa funzione che è il codice articolo 1,2 e finora e rinominare la colonna con ABC come codice articolo. Mi chiedevo se esiste un modo efficace per farlo.
Grazie
Ri: Come posso dividere il testo di una colonna in più colonne?Jim ha risposto alla tua domanda, ma non hai bisogno di una sceneggiatura.
- Seleziona tutte le colonne da modificare.
- Selezionare Col > Standardizzare gli attributi .
- Clic Attributi e seleziona Tipo di dati .
- Clic Attributi e seleziona Tipo di modellazione .
- Modifica entrambi questi attributi nel modo desiderato.
- Clic OK .
Lo scripting è ottimo ma JMP è ottimizzato per l'interazione.
Ri: Come posso dividere il testo di una colonna in più colonne?Il codice compatto per impostare il tipo di dati e il tipo di modellazione per tutte le colonne sarebbe
dt = current data table();
for( i = 1, i <= NCols( dt ), i++,
column( dt, i ) << data type( "numeric" ) << modeling type( "continuous" );
);
Per quanto riguarda la trasposizione, dovresti essere in grado di ottenere ciò che desideri utilizzando la piattaforma Stack
Tabelle==>Impila
Ri: Come posso dividere il testo di una colonna in più colonne?Ciao ancora, grazie mille. Funziona e i miei dati vengono suddivisi. Ora ci sono 138 colonne con nomi SPDATA 1 - SPDATA 138.
So che è un po' fuori dal tema del thread e forse è qualcosa che dovrei riuscire a fare, ma:
Come posso in un'istruzione JSL compatta impostare tutte le proprietà della colonna su numeriche e continue?
E in secondo luogo, come posso creare una tabella dati trasformata, dove i dati dello spettro sono UNA colonna con multilpi di 138 righe in base ad alcuni dati categoriali disponibili anche (valori datetime che hanno lo stesso valore per tutti i 138 punti dati).
Cordiali saluti Poul RS
Ri: Come posso dividere il testo di una colonna in più colonne?Ecco l'esempio tratto dalla documentazione del componente aggiuntivo.Assicurati di aver installato la versione 3 del componente aggiuntivo, quindi esegui questo esempio.
bc_party = Open( "$SAMPLE_DATA\Consumer Preferences.jmp" );
com.jmp.jperk:texttocolumns( Column( bc_party , "floss delimited"), ",", bc_party );
Se funziona, utilizzare questo codice è il modo in cui lo incorporerai nel tuo JSL
Ri: Come posso dividere il testo di una colonna in più colonne?Salve, utilizzo JMP 13 e ho installato il componente aggiuntivo Text to Columns che posso utilizzare dai menu.
Ora ho una colonna di caratteri della tabella dati che rappresenta i dati dello spettro provenienti da uno spettrofotometro. Ci sono in totale 138 sottostringhe separate da virgole. Voglio codificare in JSL, utilizzando il componente aggiuntivo, la generazione di 138 colonne numeriche ciascuna con un valore al suo interno. (Poiché i dati provengono da una serie di diodi, la separazione della lunghezza d'onda è costante, quindi non ce l'ho nei dati e quindi non è necessario convertirla..)
Ho letto alcuni esempi su come eseguire questa operazione, ma non riesco a ottenere la sintassi corretta.
Sarebbe apprezzato un piccolo aiuto: qual è la sintassi per generare 138 colonne da una colonna specifica utilizzando il componente aggiuntivo?
grazie in anticipo
Poul RS
Ri: Come posso dividere il testo di una colonna in più colonne?Grazie Ian. Sto utilizzando JMP 13.1.0 e quella pagina è vuota.
Quindi tornando alla domanda più recente, ecco come chiamare il testo nelle colonne in JSL:
dt = New Table( "Text2Col Example", Add Rows( 4 ),
New Column( "Col1", Character, "Nominal",
Set Values(
{"11 DAT 001.tif", "11 DAT 002.tif", "11 DAT 003.tif", "11 DAT 004.tif"}
)
),
New Column( "Col2", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [159.4308, 229.5031, 164.3414, 162.0241] )
)
);
dt << text to columns(delimiter(" "), columns(:Col1));Ri: Come posso dividere il testo di una colonna in più colonne?Nella mia build 13.1, vedo:


Ri: Come posso dividere il testo di una colonna in più colonne?La documentazione per col < è uno stub vuoto nell'indice degli script. Ho provato varie combinazioni ma non riesco a farlo funzionare. Qualcuno di JMP può farci sapere la sintassi corretta?
Ri: Come posso dividere il testo di una colonna in più colonne?Ho pubblicato di recente Testo in colonne, versione 3 che aggiunge il supporto per chiamare Text to Columns da JSL.
Ri: Come posso dividere il testo di una colonna in più colonne?Names Default To Here( 1 );
dt = New Table( "sample",
New Column( "column 0", character, values( {"11 DAT001.tif", "11 DAT002.tif", "11 DAT003.tif", "11 DAT004.tif"} ) )
);
// Pause so you can see it working
Wait( 2 );
// add some as an example of the elements using a formula
dt << New Column( "Column 1", formula( Num( Word( 1, :column 0 ) ) ) );
dt << New Column( "Column 2", character, formula( Substr( Word( 2, :column 0 ), 1, 3 ) ) );
dt << New Column( "Column 3", character, formula( Substr( Word( 2, :column 0 ), 6, 1 ) ) );
// Now do the last one, using JSL code
dt << New Column( "Column 4", character );
For( i = 1, i <= N Rows( dt ), i++,
:Column 4[i] = Word( -1, :Column 0[i],".");
);Ri: Come posso dividere il testo di una colonna in più colonne?Come può essere scritto in codice/JSL?
Ri: Come posso dividere il testo di una colonna in più colonne?Perfetto, è esattamente quello che cercavo, grazie Jeff.
Ri: Come posso dividere il testo di una colonna in più colonne?Se utilizzi JMP 12 o versioni successive puoi utilizzare Colonne -> Utilità -> Testo in colonne .

Se utilizzi JMP 11 o versioni precedenti puoi ottenere il componente aggiuntivo, Testo in colonne, versione 2 , che fa la stessa cosa della funzione incorporata now.
Se vuoi farlo manualmente, con JSL o l'editor delle formule, troverai il file Parola() funzione a portata di mano. Fidati di me.
