Breakout della tabella a cella singolaSto cercando di analizzare i dati per uno dei sottocomponenti del dispositivo prodotto dalla mia azienda. Sfortunatamente, i dati effettivamente utili vengono salvati in una tabella condensata in una singola cella nel database (vedi sotto). C'è un modo per suddividere questi dati in colonne e righe separate mantenendo tutti gli altri dati (ad esempio, assegnare lo stesso numero di serie a tutte le nuove righe di dati)? L'obiettivo finale è avere qualcosa come la tabella Excel qui sotto (che ho dovuto fare a mano: P) con tutti i dati di numero di serie, ID stazione, ecc. Per ogni riga.
Prima:
| ID stazione | InizioDataOra | Seriale | FunctionalTestTable |
| 1223 | 1/1/2020 | ASDF1234 | Pressione, Impostazione flusso, Variazione flusso, Valore flusso, Risultato flusso, UUT dP, Step Pos 11.000,0.00,0.050,0.001,PASSATO,11.047,-156 10.000,3.00,0.250,3.097,PASSO,9.984,-119 10.000,5.00,0.250,4.933,PASSO,9.990,-103 10.000,10.00,0.500,9.847,PASSO,9.973,-64 10.000,100.00,5.000,101.048,PASSO,9.968.525 7.000,3.00,0.250,2.957,PASSO,6.983,-114 7.000,5.00,0.250,4.885,PASSO,6.988,-95 7.000,10.00,0.500,9.822,PASSO,6.990,-48 7.000,80.00,4.000,80.916,PASSO,6.981.518 4.000,3.00,0.250,3.078,PASSO,3.981,-101 4.000,5.00,0.250,5.110,PASSO,3.988,-76 4.000,10.00,0.500,9.980,PASSO,3.987,-15 4.000,50.00,2.500,52.123,PASSO,3.993,447 |
Dopo:
| ID stazione | InizioDataOra | Seriale | Pressione | Impostazione del flusso | Varianza di flusso | Valore di flusso | Risultato del flusso | UUT DP | Passo Pos |
| 1223 | 1/1/2020 | ASDF1234 | 11.000 | 0.00 | 0,050 | 0,001 | PASSAGGIO | 11.047 | -156 |
| 1223 | 1/1/2020 | ASDF1234 | 10.000 | 3.00 | 0,250 | 3.097 | PASSAGGIO | 9.984 | -119 |
| 1223 | 1/1/2020 | ASDF1234 | 10.000 | 5.00 | 0,500 | 4.933 | PASSAGGIO | 9.990 | -103 |
| 1223 | 1/1/2020 | ASDF1234 | 10.000 | 10:00 | 5.000 | 9.847 | PASSAGGIO | 9.973 | -64 |
| 1223 | 1/1/2020 | ASDF1234 | 10.000 | 100,00 | 0,250 | 101.048 | PASSAGGIO | 9.968 | 525 |
| 1223 | 1/1/2020 | ASDF1234 | 7.000 | 3.00 | 0,250 | 2.957 | PASSAGGIO | 6.983 | -114 |
| 1223 | 1/1/2020 | ASDF1234 | 7.000 | 5.00 | 0,250 | 4.885 | PASSAGGIO | 6.988 | -95 |
| 1223 | 1/1/2020 | ASDF1234 | 7.000 | 10:00 | 0,500 | 9.822 | PASSAGGIO | 6,990 | -48 |
| 1223 | 1/1/2020 | ASDF1234 | 7.000 | 80,00 | 4.000 | 80.916 | PASSAGGIO | 6.981 | 518 |
| 1223 | 1/1/2020 | ASDF1234 | 4.000 | 3.00 | 0,250 | 3.078 | PASSAGGIO | 3.981 | -101 |
| 1223 | 1/1/2020 | ASDF1234 | 4.000 | 5.00 | 0,250 | 5.110 | PASSAGGIO | 3.988 | -76 |
| 1223 | 1/1/2020 | ASDF1234 | 4.000 | 10:00 | 0,500 | 9.980 | PASSAGGIO | 3.987 | -15 |
| 1223 | 1/1/2020 | ASDF1234 | 4.000 | 50,00 | 2.500 | 52.123 | PASSAGGIO | 3.993 | 447 |
Grazie!
Davide

Accesso ai datiRi: Breakout della tabella a cella singola@Jeff_Perkinson Spero che tu l'abbia fatto in JMP 16...
Ri: Breakout della tabella a cella singolaSono lieto di sapere che ha messo in forma i dati affinché tu possa analizzarli.
Sì, puoi creare uno script per farlo per te. Ci vorrà un po' di lavoro, ma JMP ne crea una parte per te.
Ecco uno schema di come farlo.
JMP 15 non catturerà il comando Text to Columns... ma è piuttosto semplice scrivere la sintassi:
// Text to columns
Data Table( "Community330288.jmp" ) <<
Text to Columns( columns( :FunctionalTestTable ), Delimiters( NEWLINE ) );
Il passaggio successivo è il comando Stack. JMP inserisce il JSL per questo in uno script denominato Source nella tabella risultante.

Fai clic destro su di esso e scegli Modifica e otterrai lo script da copiare e incollare:
stacked_data = Data Table( "Community330288.jmp" ) << Stack(
columns(
:FunctionalTestTable 1,
:FunctionalTestTable 2,
:FunctionalTestTable 3,
:FunctionalTestTable 4,
:FunctionalTestTable 5,
:FunctionalTestTable 6,
:FunctionalTestTable 7,
:FunctionalTestTable 8,
:FunctionalTestTable 9,
:FunctionalTestTable 10,
:FunctionalTestTable 11,
:FunctionalTestTable 12,
:FunctionalTestTable 13,
:FunctionalTestTable 14
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Name( "Non-stacked columns" )(Keep( :StationID, :StartDateTime, :Serial ))
)
Il passaggio successivo consiste nel ripetere il testo in colonne con la virgola come delimitatore:
// Text to columns
stacked_data << Text to Columns( columns( :Data ), Delimiters( "," ) );
Un'altra cosa che JMP non registrerà è la ridenominazione delle colonne dalla prima riga dei dati. La ridenominazione può essere programmata ma dovrai scriverla tu stesso.
Se sai che il numero di colonne sarà sempre lo stesso (in questo caso 7) puoi codificarlo. Se il numero di colonne è variabile, dovrai fare un po' più di lavoro. Fammi sapere se è così e questo è un altro ponte che possiamo aiutarti ad attraversare.
for(i=1, i<=7, i++,
column("Data " || char(i))<<SET name=""></SET>
Infine, dovrai selezionare le righe che contengono i nomi delle colonne ed eliminarle. Ho codificato il nome della colonna e il valore di seguito. Se sono variabili... beh, ci vorrà solo un po' più di lavoro.
stacked_data << Select Where( :Pressure == "Pressure" ) << Delete Rows;
Infine, modifica alcune colonne in numeriche. Dovrai ripetere questo per ogni colonna.
:Pressure << set data type(Numeric);
Spero che aiuti.
Mantieni le domande in arrivo.
Ri: Breakout della tabella a cella singolaEhi Jeff, ha funzionato perfettamente! Ho una domanda di follow-up. C'è un modo per salvare tutti quei passaggi come script in modo da non doverli ripetere ogni volta che devo estrarre questi dati? Ho provato a salvarlo come script di sessione, ma ciò non ha salvato nessuno dei dati di breakout.
Ri: Breakout della tabella a cella singolaCIAO @dpeyer ,
Ecco un componente aggiuntivo che puoi chiamare per importare i dati.
In alternativa, puoi eseguire lo script per importare il file di testo in JMP.
Ho basato l'importazione sul file di testo di esempio allegato.
Sia lo script che il componente aggiuntivo possono essere aggiornati per concatenare file simili in un unico file.
saluti,
Stan
Ri: Breakout della tabella a cella singolaEhi Jeff,
Ho parlato con l'Ingegnere di Collaudo responsabile, non ti preoccupare :P. Sfortunatamente sono 14k tabelle separate ciascuna con la propria cella e intestazioni ripetute in ogni tabella. Ho allegato un'immagine di 3 (del 14k...). Proverò il tuo metodo e ti farò sapere come va!

Ri: Breakout della tabella a cella singolaPrima di tutto, chiunque abbia creato un tavolo come questo dovrebbe essere... beh... mi vengono in mente delle punizioni appropriate.
Fortunatamente, penso che JMP semplificherà la gestione di questo problema.
Per prima cosa, usa il Cols -> Utilità -> Testo in colonne.. . COME @Mandy_Chambers suggerito, ma usa NEWLINE come delimitatore.

Questo dovrebbe darti una nuova colonna per ogni riga all'interno della colonna FunctionalTextTables.

Ora, usa Tabelle->Impila per impilare tutte le colonne FunctionalTestTable # (ad esempio, FunctionalTestTable 1, FunctionalTestTable 2, ecc.).

Questo ti darà una riga per ciascuna di quelle colonne.

Ora puoi usare Testo in colonne... di nuovo, questa volta con una virgola (,) come delimitatore.

Ora otterrai le colonne dei singoli valori.

Ora si tratta di copiare e incollare i nomi delle colonne. Ecco un consiglio per aiutarti lì I nomi delle colonne ti hanno abbattuto? Prova questo.E poi, usa Cols->Standardizza attributi per modificare il tipo di dati delle colonne in Numerico come appropriato.
Hai detto di avere un database di 14k di questi. Sono 14k tabelle diverse nel database o 14k righe di una tabella? Si spera che quest'ultimo sia in grado di ottenere tutto in una tabella di dati JMP utilizzando File-> Database-> Apri tabella ...
Se sono davvero 14.000 tabelle diverse, dovrai usarle Tabelle->Concatena per inserirli tutti in una tabella in JMP, ma attraversiamo quel ponte dopo aver confermato quale si trova nel database.
Indipendentemente, Seleziona Celle corrispondenti è un altro strumento che ti aiuterà a ripulire. Lo spiegherò in un post di follow-up dopo che avremo fatto solo un po' più di progressi.
Ri: Breakout della tabella a cella singolaHmmm... non devo descrivere correttamente quello che sto cercando di fare. Ho aggiornato la mia domanda originale con un esempio prima/dopo per provare a illustrare meglio. Inoltre, ho un database di 14.000 FunctionalTestTables per cui ho bisogno di farlo, quindi fare Text to Columns e quindi trasporre ogni singola tabella non è un'opzione praticabile.
Grazie per l'aiuto! Lo apprezzo davvero
Ri: Breakout della tabella a cella singola
Ri: Breakout della tabella a cella singolaMandy,
Grazie per il consiglio! Ho appreso dell'utilità Text to Columns subito prima di pubblicare questo messaggio, ma ha creato 84 nuove colonne per riga e ha perso la funzionalità dei dati tabulati che sto cercando di utilizzare. Costruisco un esempio di come vorrei che fosse l'output e lo aggiungo al mio post originale.
Grazie!
Ri: Breakout della tabella a cella singolaPenso che il nostro posto si sia incrociato. Quindi, dopo aver utilizzato il testo in colonne, ora usa Tables Transpose e puoi capovolgere la tabella e ottenere i dati in colonne ..
Ri: Breakout della tabella a cella singolapuoi prendere il valore in questo modo, 11.000,0.00,0.050,0.001,PASS,11.047,-156, quella colonna e usare Colonne> Utilità> Testo in colonne per creare colonne separate per le diverse cose in quella colonna.
Usa i delimitatori ,-
e questo ti darà colonne come questa:
11.000 0,00 0,050 0,001 PASS .. ecc..
se vuoi scomporlo di più o in modo diverso puoi usare un delimitatore o uno spazio diverso.
Spero che questo sia quello che stavi cercando di fare.