Kombinieren Sie N Spalten (für M-Parameter) in einer eindeutigen Spalte pro Parameter, basierend auf Regex mit JSLHallo,
Ich habe N Spalten mit numerischen Daten, einige der Spalten sind für eine gegebene Zeile leer (daher sind die interessierenden Parameter spaltenweise gestreut)
Die N-Spalten stellen M-Parameter dar, und ich möchte, dass jeder der M-Parameter in einer einzelnen Spalte zusammengefasst wird.
Idealerweise würde ich gerne eine Anleitung dazu erhalten, wie man dieses Skript in JSL schreibt und ein Formular oder einen regulären Ausdruck enthält, sodass ich dies für eine große Anzahl von Spalten mit Schlüsselwörtern tun kann
Anhängen einer sehr einfachen Beispieldatentabelle.
Re: Kombiniere N Spalten (für M-Parameter) in einer eindeutigen Spalte pro Parameter, basierend auf Regex mit JHi, mpanggabean!
Teilen Sie uns bitte mit, ob dies richtig ist: Sie möchten Spalten stapeln, die beispielsweise "param1" und "domain1" und "vdd" sowie vermutlich "paramx" und "domainy" und "zzz" als separate Spalten enthalten.
Mit wie vielen Spalten und Zeilen beginnen Sie mit und enden mit?
Re: Kombiniere N Spalten (für M-Parameter) in einer eindeutigen Spalte pro Parameter, basierend auf Regex mit JBei diesen Dingen hängt es sehr stark davon ab, was Sie mit den Daten sicher annehmen können (und was Sie nicht können!). Wenn ich es richtig verstanden habe, funktioniert der folgende Code für die angegebene Beispieltabelle (und 'ähnliche' Tabellen). Es könnte verallgemeinert werden, oder mit etwas mehr Aufwand zum Erstellen von Formelsäulen (durch Ausnutzen) @ Jeff_Perkinson Verwendung von 'Sum ()' oben).
NamesDefaultToHere(1);
dt = CurrentDataTable();
// First data column
fdc = 2;
// Number of columns in a group
nc = 2;
// Number of groups
ng = (NCol(dt) - 1) / nc;
// Loop over each group and add a 'sum' column for each
for(g=1, g <=ng, g++,
firstCol = fdc + (g-1)*nc;
lastCol = firstCol + (nc-1);
gData = dt << getAsMatrix(firstCol::lastCol);
// Replace ',' by '0' so 'VSum()' works as required
gData[loc(IsMissing(gData))] = 0;
// Get the sum of columns using 'VSum()' (need to transpose, and back again)
sumVals = Transpose(VSum(Transpose(gData)));
// Make the new column
cName = Column(dt, firstCol) << getName;
dt << NewColumn(cName||"_Sum", Numeric, Continuous, Values(sumVals));
);
Re: Kombiniere N Spalten (für M-Parameter) in einer eindeutigen Spalte pro Parameter, basierend auf Regex mit JHallo Jeff,
Ja, es sollte nur eine Spalte mit einem Parameterwert geben. Es gibt jedoch zu viele Parameter und Unterparameter. Zum Beispiel kann param1 Folgendes haben: param1_domain1_vdd1, param1_also_domain1_vdd1, param1_domain1_vdd2, param1_also_domain1_vdd2, param1_domain1_vdd3, param1_also_domain1_vdd3 usw. Möchte nur einen Parameter mit derselben Domäne und derselben Vdd konsolidieren und hat möglicherweise eine größere Gesamtanzahl von Parametern. Daher möchte ich vermeiden, dass Sie zu oft auswählen und summieren. Weitere Vorschläge?
Vielen Dank für den einfachen Ausgangspunkt!
Re: Kombiniere N Spalten (für M-Parameter) in einer eindeutigen Spalte pro Parameter, basierend auf Regex mit JWenn Sie sicher sein können, dass es nur eine Spalte mit einem Parameterwert gibt, können Sie die Funktion Sum () verwenden. Dies liegt daran, dass Sum () fehlende Werte ignoriert. Die Summe der Parameterwerte ist also der Wert des nicht fehlenden Parameters.

Re: Kombiniere N Spalten (für M-Parameter) in einer eindeutigen Spalte pro Parameter, basierend auf Regex mit J @mpanggabean .
Das folgende Skript hilft Ihnen dabei, die Spaltenliste in zwei Listen zu unterteilen. Die 2 Listen werden es Ihnen sagen
1 Was sind die Spaltennamen, die Parameter enthalten
2 Welche eindeutigen Parameter stehen in der Tabelle zur Verfügung?
Von hier oder mit diesem Basisskript aus können Sie die Daten nach Belieben bearbeiten.
Clear Log () ; Clear Globals();
dt = Current Data Table() ; // Getting a reference to the table . Alternatively you can open the file using Open()
ColNames = dt << Get Column Names("String"); // Acquire names of columns in table as string
ParameterColList = list(); // Intialize an empty list
ParamsList = list() ;
KeyWord = "param"; // Define Keyword all your parameters have
CommonDelim = "_";
for(i = 1 , i <= N Items(ColNames), i++,
If(!IsMissing(Regex(Char(ColNames[i]),KeyWord)),
Insert Into(ParameterColList,ColNames[i]);
If(Contains(ColNames[i],CommonDelim),
Pos = Contains(ColNames[i],CommonDelim); // Identify where the common delimiter is
Insert Into(ParamsList,Substr(ColNames[i],1,Pos-1));
);
);
);
Show(ParameterColList); // Display List
Show(ParamsList);