Supprimer les valeurs de cellule en fonction d'une condition de colonne et fusionner les lignes avec le même horodatage à l'aide de JSLSalut,
J'ai suivant "TestData":

1. Je veux que la valeur de la cellule soit nulle lorsque le statut est en panne. par exemple (la valeur de la cellule "A status" est "down" la valeur dans la colonne "A" doit être nulle au lieu de "1334". devrait faire de même pour les colonnes B , C et D.
2.Supprimez toutes les colonnes qui ont "statut" dans le nom de la colonne.
La sortie devrait ressembler à ceci :


3. Maintenant, toutes les mêmes lignes d'horodatage doivent être fusionnées. la sortie attendue serait : (je sais que je peux utiliser le résumé [grouper par et somme] pour y parvenir. Mais y a-t-il une meilleure façon de le faire en JSL ?)

Je dois le faire pour plusieurs fichiers csv. Quelqu'un peut-il m'aider à écrire JSL pour cela.
Merci beaucoup d'avance.
ScriptRe : Supprimer les valeurs de cellule en fonction d'une condition de colonne et fusionner les lignes avec le même horodatage à l'aide de JSLCela devrait le faire pour vous, mais le script suppose que les colonnes d'état correspondent à la colonne qui les précède.Vous pouvez le faire en regardant le nom de la colonne d'état et en trouvant une colonne portant le même nom moins "Statut", mais j'ai pensé que c'était inutilement compliqué si l'hypothèse était vraie.
dt = Current Data Table();
col_names = dt << Get Column Names(string);
//Assuming the corresponding value column for each status column is always the preceding one
//Loop backwards through the columns
for(i = N Col(dt), i>= 1, i--,
//If column name has word "status" in it
if(Contains(Lowercase(col_names[i]), "status") > 0,
//Look for instances of "{down}"
down_rows = dt << Get Rows Where( dt:(As Name(col_names[i])) == "{down}" );
//Assuming preceding column is the value column, replace {down} rows with missing
Column(dt, i-1)[down_rows] = .;
dt << Delete Columns(i);
);
);
//Create table summary to consolidate time stamp rows with same value
//Build a string that we can parse for the summary operation
remaining_cols = dt << Get Column Names("string");
summary_str = "dt_clean = dt << Summary( Group( :TimeStamp ), ";
//Loop through all columns except TimeStamp to add "Sum( <CURRENT col=""> )" to summary string
for(i = 2, i <= N Col(dt), i++,
summary_str = summary_str||"Sum( :Name(\!""||remaining_cols[i]||"\!")), ";
);
//Attach last part of script
summary_str = summary_str||"Freq( \!"None\!"),
Weight(\!"None\!"),
statistics column name format( \!"column\!" ),
Link to original data table( 0 ),
output table name( \!"CleanedData\!" ));";
//Parse and evaluate the string to create the summary table dt_new
eval(parse(summary_str));
//Delete N Rows column
dt_clean << Delete Columns(:N Rows);</CURRENT>