Salut tout le monde,
J'essaie d'intégrer jmp afin de traiter les données de fermentation d'éthanol dans des graphiques et d'autres mesures. Je rencontre des problèmes pour convertir le format existant des données en un tableau utilisable par JMP.
Nous recevons les données sous forme de feuille Google de l'usine. Je peux télécharger cette table de données sur JMP. Le problème vient du format des données. Les données sont répertoriées par numéro de lot pour chaque ligne, et chaque colonne est une chaîne de texte avec des nombres tels que "4hr Ethanol" ou "8hr Lactic". Voir ci-dessous pour un exemple.
| Grouper | 0h Ethanol | 0 h lactique | 0 h acétique | 4h Ethanol | 4h Lactique | 4h acétique | …. | 60 h Éthanol | Lactique 60 h | 60 h acétique |
| 1 | | | | | | | | | | |
| 2 | | | | | | | | | | |
| 3 | | | | | | | | | | |
| 4 | | | | | | | | | | |
Je dois mettre chaque catégorie sur une base de temps. Par exemple, je veux représenter graphiquement la concentration d'éthanol de 0 à 60 heures pour les lots 2 et 3. Je crois que je dois empiler la table de données, le texte dans les colonnes et utiliser recode pour changer l'en-tête de colonne de la chaîne de texte à l'heure en heures en tant qu'entrée numérique. J'ai quelques problèmes pour obtenir le tableau exactement comme je le veux pour créer ces graphiques. Toute aide serait appréciée. Merci d'avance.
Voici un exemple qui produit votre graphique Ethanol, avec des données fictives

Voici un script qui produit l'intrigue
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 ) )
)
)
);
En fait, je travaillais dans cette industrie et j'ai de bons souvenirs de tous les différents formats de données que nous avons rencontrés... Le plus souvent, il s'agissait du format de données horizontal que vous avez fourni. Jim a tout à fait raison de dire que vous devez faire une combinaison d'empilement et de division de la table. Je ferais une très petite suggestion au script ci-dessus. Si vous utilisez le format "hr:m" dans la ligne ci-dessous, il en résultera les unités de durée au lieu de l'heure de la journée.
S'amuser!
// Create new time and Type of Gas
dtStack << New Column( "Time", Format( "hr:m" ), set each value( Num( Word( 1, :label, "hr" ) ) * 3600 ) );