Elimina i valori delle celle in base a una condizione di colonna e unisci le righe con lo stesso timestamp utilizzando JSLCIAO,
Ho i seguenti "TestData":

1. Voglio che il valore della cella sia nullo quando lo stato è inattivo. ad esempio ("A status "il valore della cella è "down" il valore nella colonna "A" dovrebbe essere nullo invece di "1334". dovrebbe fare lo stesso per le colonne B , C e D.
2.Elimina tutte le colonne che hanno "status" nel nome della colonna.
L'output dovrebbe essere qualcosa del genere:


3. Ora tutte le stesse righe di timestamp dovrebbero essere unite. l'output previsto sarebbe: (so che posso usare summary [group by and sum] per raggiungere questo obiettivo. Ma c'è un modo migliore per farlo in JSL?)

Devo farlo per più file csv. Qualcuno può aiutarmi a scrivere JSL per questo.
Grazie mille in anticipo.
ScriptingOggetto: eliminare i valori delle celle in base a una condizione di colonna e unire le righe con lo stesso timestamp utilizzando JSLQuesto dovrebbe farlo per te, ma lo script presuppone che le colonne di stato corrispondano alla colonna che le precede.Potresti farlo guardando il nome della colonna di stato e trovando una colonna con lo stesso nome meno "Stato", ma ho pensato che fosse inutilmente complicato se l'ipotesi è vera.
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>