Ciao a tutti,
Sto tentando di integrare jmp per elaborare i dati sulla fermentazione dell'etanolo in grafici e altri parametri. Sto riscontrando alcuni problemi nel convertire il formato esistente dei dati in una tabella utilizzabile da JMP.
Riceviamo i dati come foglio Google dall'impianto. Sono in grado di caricare questa tabella dati su JMP. Il problema riguarda il formato dei dati. I dati sono elencati per numero di lotto per ogni riga e ogni colonna è una stringa di testo con numeri come "4 ore di etanolo" o "8 ore di lattico". Vedi sotto per un esempio.
| Lotto | 0 ore di etanolo | 0 ore lattici | 0 ore acetico | Etanolo 4 ore | 4 ore lattica | 4 ore acetico | …. | Etanolo 60 ore | 60 ore lattici | 60 ore acetico |
| 1 | | | | | | | | | | |
| 2 | | | | | | | | | | |
| 3 | | | | | | | | | | |
| 4 | | | | | | | | | | |
Devo inserire ciascuna categoria in base al tempo. Ad esempio, voglio rappresentare graficamente la concentrazione di etanolo da 0 a 60 ore per i lotti 2 e 3. Credo di dover impilare la tabella dati, il testo in colonne e utilizzare la ricodifica per modificare l'intestazione della colonna dalla stringa di testo all'ora in ore come voce numerica. Sto riscontrando alcuni problemi nel ottenere la tabella esattamente come desidero che crei questi grafici. Qualsiasi aiuto sarebbe apprezzato. Grazie in anticipo.
In realtà lavoravo in questo settore e ho bei ricordi di tutti i diversi formati di dati in cui ci siamo imbattuti... Nella maggior parte dei casi si trattava del formato dati orizzontale fornito. Jim ha esattamente ragione nel dire che devi fare una combinazione di impilamento e divisione del tavolo. Vorrei dare un piccolo suggerimento allo script sopra. Se utilizzi il formato "hr:m" nella riga sottostante, verranno visualizzate le unità di durata anziché l'ora del giorno.
Divertiti!
// Create new time and Type of Gas
dtStack << New Column( "Time", Format( "hr:m" ), set each value( Num( Word( 1, :label, "hr" ) ) * 3600 ) );
Ecco un esempio che produce il tuo grafico dell'etanolo, con dati fittizi

Ecco uno script che produce la trama
Names Default To Here( 1 );
// Create a sample data table
dt = New Table( "Example",
Add Rows( 4 ),
New Column( "Batch", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 2, 3, 4] ) ),
New Column( "0hr Ethanol",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [103.347990080313, 90.8056789034286, 110.847323879326, 94.4892596023655] )
),
New Column( "0 hr Lactic",
Numeric,
"Nominal",
Format( "", 16 ),
Set Selected,
Set Values( [98.2941757953967, 87.0280094785425, 96.8477348247328, 92.910237668013] )
),
New Column( "0 hr Acetic",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [86.0736604847805, 84.7654940657705, 103.653020778599, 103.896496570196] )
),
New Column( "4hr Ethanol",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [106.780752584519, 83.6557999642181, 131.739275066723, 108.595538300447] )
),
New Column( "4hr Lactic",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [117.501711811893, 110.280136421701, 99.5008817613032, 124.122069840277] )
),
New Column( "4hr Acetic",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [65.8570956816124, 98.7590715244122, 116.085302666605, 77.465274192855] )
),
New Column( "60 hr Ethanol",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [93.2946183359449, 102.663246654816, 88.3140432209597, 77.0616091856786] )
),
New Column( "60 hr Lactic",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [115.208356681673, 94.3976953097385, 117.870933434213, 88.9448640120466] )
),
New Column( "60 hr Acetic",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [101.707143312459, 115.87798730461, 111.256786967136, 114.046044409696] )
),
Set Row States( [1, 0, 0, 0] )
);
// Stack the columns
dtStack = dt << Stack(
columns(
:"0hr Ethanol"n, :"0 hr Lactic"n, :"0 hr Acetic"n, :"4hr Ethanol"n, :"4hr Lactic"n, :"4hr Acetic"n, :"60 hr Ethanol"n, :"60 hr Lactic"n,
:"60 hr Acetic"n
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
// Create new time and Type of Gas
dtStack << New Column( "Time", Format( "h:m" ), set each value( Num( Word( 1, :label, "h" ) ) * 3600 ) );
For each row(:label = word(-1,:Label," "));
// Split out into separate columns
dtSplit dtStack << Split(
Split By( :Label ),
Split( :Data ),
Group( :Batch, :Time ),
Sort by Column Property
);
// Graph the data
Graph Builder(
Size( 528, 454 ),
Show Control Panel( 0 ),
Variables( X( :Time ), Y( :Ethanol ), Overlay( :Batch ) ),
Elements( Line( X, Y, Legend( 15 ) ), Points( X, Y, Legend( 16 ) ) ),
Local Data Filter(
Add Filter(
columns( :Batch ),
Where( :Batch == {1, 2} ),
Display( :Batch, N Items( 4 ) )
)
)
);