Hallo,
Ich bin neu im JSL-Scripting. Ich möchte Spalten mit demselben gemeinsamen Namen stapeln (bis zu einer bestimmten Länge). So wie ich den Spaltennamen „66_CORR_B1_W00“ habe, „66_CORR_B1_W01“ und so weiter bis zu „66_CORR_B1_W12“. Sie sollten in einer einzelnen Spalte mit Namen stehen „66_CORR_B1“. Und dies wird für einen anderen Spaltengruppennamen wiederholt, der mit „66_CORR_B2“ beginnt. Es könnten 20 Gruppen dieser Spalten vorhanden sein. Schließlich möchte ich 20 Spalten, die aus 20 Spaltengruppen stammen.
Hier füge ich eine Beispieldatentabelle bei.
Dank im Voraus.
Muhammad Rahman
Nachfolgend finden Sie ein Skript, das für die Beispieldaten funktioniert, die Sie in Ihrem ersten Diskussionseintrag angegeben haben.
Names Default To Here( 1 );
dt = Data Table( "Sample_data" );
ColList = dt << get column names( string, numeric );
// Loop across the column names and find only the
// columns desired
For( i = N Items( ColList ), i >= 1, i--,
If( Contains( ColList[i], "66_CORR_B" ) == 0,
ColList = Remove( ColList, i, 1 )
)
);
// Sort the columns to ensure they are in the correct order
// for the contiguous stacking
ColList = Sort List( ColList );
// Stack the data
Data Table( "Sample_data" ) << Stack(
columns( ColList ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Number of Series( 2 ),
Contiguous
);
Das Skript ist sehr einfach, da es nicht nach Situationen sucht, in denen nicht die gleiche Anzahl von Spalten für jede Gruppierung vorhanden ist und die auszuwählenden Spalten keinem sehr guten Satz von Namen folgen.
Aber es sollte Ihnen eine Vorstellung davon geben, wie Sie vorgehen müssen