Je travaille sur un script qui parcourt une liste de réponses Y et exécute une dégradation (test de stabilité) sur chacune d'elles avant de générer des parties du rapport dans une table de données combinée. Il comprend les étapes suivantes :
- Ouvre une boîte de dialogue dans laquelle l'utilisateur sélectionne plusieurs « Y, réponse », « Heure » et « étiquette, ID système ».
- Pour chaque « Y, réponse », le script effectue une boucle et exécute un test de stabilité de dégradation, puis génère les informations « Comparaisons de modèles » dans un rapport.
- Concatène les rapports dans une table principale.
J'ai inclus du code pour prendre le nom de la colonne Y pour chaque boucle et l'ajouter comme nouvelle colonne à chaque rapport, puis concaténer chaque rapport dans une nouvelle table principale. Les rapports individuels et le « combinedDataTable » ont tous deux la nouvelle colonne (« Source Y Column ») ; cependant, il ne remplit pas les cellules avec le nom de colonne respectif. Le script s'exécute correctement et sans erreur. J'ai inclus un certain nombre de captures d'écran ci-dessous. Le code problématique se trouve vers la fin du script.
// Initialize an empty data table to store combined results
combinedDataTable = New Table( "Combined Degradation Data" );
// Loop through each selected Y column and perform degradation analysis
For( i = 1, i <= N Items( YCols ), i++,
currentYCol = Column( dt, YCols[i] );
// Calculate the min and max values of the current Y column
minValue = Col Minimum( currentYCol );
maxValue = Col Maximum( currentYCol );
// Adjust the min and max values by 2%
adjustedMin = minValue * 0.98;
adjustedMax = maxValue * 1.02;
// Determine the increment value based on the highest value
If( maxValue < 5,
incValue = 0.25,
If( maxValue > 5 & maxValue < 15,
incValue = 0.25,
If( maxValue > 90,
incValue = 0.5,
incValue = (adjustedMax - adjustedMin) / 10
)
)
);
//Determine the X Scale Box Based on Number of Timepoints
maxTimepoint = Col Maximum( Column( dt, XCols[1] ) );
adjustedMaxTimepoint = maxTimepoint + 1;
// Perform Degradation Analysis
degReport = dt << Degradation(
Y( currentYCol ),
Time( Column( dt, XCols[1] ) ), // Assuming only one X column is selected
Label( Column( dt, BCols[1] ) ), // Assuming only one By column is selected
Application( "Stability Test" ),
Connect Data Markers( 0 ),
Show Fitted Lines( 1 ),
Show Spec Limits( 1 ),
Show Median Curves( 0 ),
Show Legend( 1 ),
No Tab List( 0 ),
Use Pooled MSE for Nonpoolable Model( 0 ),
Set Censoring Time( . ),
Show Residual Plot( 1 ),
Show Inverse Prediction Plot( 1 ),
Show Curve Interval( 1 ),
Inverse Prediction Interval( "Confidence Interval" ),
Inverse Prediction Alpha( 0.05 ),
Inverse Prediction Side( "Lower One Sided" ),
SendToReport(
Dispatch( {"Overlay"}, "1", ScaleBox, {Min( -1 ), Max( adjustedMaxTimepoint ), Inc( 6 ), Minor Ticks( 1 )} ),
Dispatch(
{"Overlay"},
"2",
ScaleBox,
{Format( "Fixed Dec", 12, 1 ), Min( adjustedMin ), Max( adjustedMax ), Inc( incValue ), Minor Ticks( 0 )}
)
)
);
// Extract the data from the specified location
extractedData = Report( degReport )["Degradation Data Analysis"]["Overlay"]["Stability Tests"][Table Box( 2 )] << Make Combined Data Table;
// Add a column to indicate the source Y column
currentYColName = Column( dt, YCols[i] ) << Get Name;
extractedData << New Column( "Source Y Column", Character, "Nominal", Set Values( Repeat( currentYColName, N Rows( extractedData ) ) ) );
// Combine the extracted data into the combined data table
combinedDataTable << Concatenate( extractedData, Append to first table( 1 ) );
// Close the individual report window
Close( Window( degReport ) );
);
// Show the combined data table
combinedDataTable << Show Window;
Remarques :
Voici la fenêtre de sortie d'une des analyses de dégradation. J'extrais les informations dans le contour rouge.

Voici la table de sortie principale qui contient les deux réponses Y, mais la « colonne source Y » n'est pas renseignée.

Si vous définissez la même valeur pour chacune des lignes, vous pouvez utiliser Définir chaque valeur
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
mystr = "ABC";
dt << New Column("X", Character, Set Each Value(mystr));