Löschen Sie Zellenwerte basierend auf einer Spaltenbedingung und führen Sie Zeilen mit demselben Zeitstempel mit JSL zusammenHallo,
Ich habe folgende "TestData":

1. Ich möchte, dass der Zellenwert null ist, wenn der Status „Down“ ist. zum Beispiel ("Ein Status" Zellenwert ist "down" der Wert in Spalte "A" sollte null sein statt "1334". sollte dasselbe für die Spalten B , C und D tun.
2.Löschen Sie alle Spalten mit "Status" im Spaltennamen.
Die Ausgabe sollte in etwa so aussehen:


3. Jetzt sollten alle gleichen Zeitstempelzeilen zusammengeführt werden. Die erwartete Ausgabe wäre: (Ich weiß, dass ich die Zusammenfassung [Gruppieren nach und Summe] verwenden kann, um dies zu erreichen. Aber gibt es einen besseren Weg, dies in JSL zu tun?)

Ich muss dies für mehrere CSV-Dateien tun. Kann mir jemand helfen, JSL dafür zu schreiben.
Vielen Dank im Voraus.
SkripterstellungRe: Zellenwerte basierend auf einer Spaltenbedingung löschen und Zeilen mit demselben Zeitstempel mit JSL zusammenführenDies sollte es für Sie tun, aber das Skript geht davon aus, dass die Statusspalten der Spalte entsprechen, die ihnen gerade vorangeht.Sie könnten dies tun, indem Sie sich den Namen der Statusspalte ansehen und eine Spalte mit demselben Namen minus "Status" finden, aber ich dachte, das ist unnötig kompliziert, wenn die Annahme wahr ist.
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>