Hola a todos,
Estoy intentando integrar jmp para procesar datos de fermentación de etanol en gráficos y otras métricas. Tengo algunos problemas para convertir el formato existente de los datos en una tabla que JMP pueda utilizar.
Recibimos los datos como una hoja de Google de la planta. Puedo cargar esta tabla de datos en JMP. El problema viene con el formato de los datos. Los datos se enumeran por número de lote para cada fila y cada columna es una cadena de texto con números como "4 horas de etanol" o "8 horas de láctico". Vea a continuación un ejemplo.
| Lote | 0 h de etanol | 0 h láctico | 0 h acético | 4 horas de etanol | Láctico de 4 horas | Acético de 4 horas | …. | 60 horas de etanol | 60 h láctico | 60 h acético |
| 1 | | | | | | | | | | |
| 2 | | | | | | | | | | |
| 3 | | | | | | | | | | |
| 4 | | | | | | | | | | |
Necesito poner cada categoría por tiempo. Por ejemplo, quiero representar gráficamente la concentración de etanol de 0 a 60 horas para los lotes 2 y 3. Creo que necesito apilar la tabla de datos, el texto en columnas y usar la recodificación para cambiar el encabezado de la columna de la cadena de texto al tiempo en horas como una entrada numérica. Tengo algunos problemas para obtener la tabla exactamente como quiero que cree estos gráficos. Cualquier ayuda sería apreciada. Gracias de antemano.
De hecho, solía trabajar en esta industria y tengo buenos recuerdos de todos los diferentes formatos de datos con los que nos topamos... Lo más común es que fuera el formato de datos horizontal que usted proporcionó. Jim tiene toda la razón en que necesitas hacer alguna combinación de apilar y dividir la mesa. Haría una pequeña sugerencia al script anterior. Si utiliza el formato "hr:m" en la línea siguiente, se obtendrán las unidades de duración en lugar de la hora del día.
¡Divertirse!
// Create new time and Type of Gas
dtStack << New Column( "Time", Format( "hr:m" ), set each value( Num( Word( 1, :label, "hr" ) ) * 3600 ) );
A continuación se muestra un ejemplo que produce su gráfico de etanol, con datos ficticios.

Aquí hay un guión que 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 ) )
)
)
);