Wie stapele ich mehrere Spalten in einer neuen Spalte und ignoriere doppelte Einträge?Ich habe eine mehrspaltige Datentabelle (Zeichen, Nennwert). Ich möchte die Einträge/Elemente in den letzten vier Spalten in eine neue Spalte in derselben Datentabelle einfügen und dabei doppelte Einträge/Elemente aus den gestapelten Spalten ignorieren. Wie erreicht man dies in JSL?
Automatisierung und SkripterstellungBetreff: Wie stapele ich mehrere Spalten in einer neuen Spalte und ignoriere doppelte Einträge?Ohne zu wissen, wie Ihre Daten aussehen und wie sie am Ende aussehen sollten, ist es meine beste Vermutung, eine Kombination davon zu verwenden Assoziatives Array() << Schlüssel abrufen Und Concat Items()
Betreff: Wie stapele ich mehrere Spalten in einer neuen Spalte und ignoriere doppelte Einträge?@jthi Danke. Aber werden dadurch Duplikate gelöscht?
Meine (zu stapelnden) Spalten haben gemeinsame Char-Einträge, aber auch eindeutige Einträge. Ich möchte jedes in der neuen Spalte behalten und die Duplikate löschen.
Betreff: Wie stapele ich mehrere Spalten in einer neuen Spalte und ignoriere doppelte Einträge?Assoziative Arrays Es können keine doppelten Schlüssel vorhanden sein, also wird es das tun (es ist auch bestellt, daher kann sich die Reihenfolge ändern).
Betreff: Wie stapele ich mehrere Spalten in einer neuen Spalte und ignoriere doppelte Einträge?Hier sind einige Möglichkeiten, dies zu tun:
- Tabellenoperationen:
- Stapeln Sie die Spalten über Tabellen > Stapeln zu einer Spalte
- Verwenden Sie Tabellen > Zusammenfassung mit dieser gestapelten Spalte als Gruppenrolle
- JSL
- Holen Sie sich Spaltenwerte in eine Liste
- list_of_values = Spalte(Tabellenname, Spaltenname) << Werte abrufen
- Sie können dies für eine andere Spalte erneut tun und diese Werte in die Liste einfügen
- list_of_values = Einfügen in(list_of_values, Spalte(Tabellenname, anderer Spaltenname) << Werte abrufen)
- bei Bedarf wiederholen
- Verwenden Sie ein Associate Array, um die eindeutigen Werte zu erhalten
- unique_values = (Associative Array(list_of_values)) << Schlüssel abrufen
- Fügen Sie diese Werteliste in eine neue Spalte einer Datentabelle ein
Names Default To Here( 1 );
// create table with 4 columns with random letters
nr = 20;
dt = New Table( "Example", addrows( nr ) );
letterlist = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q",
"R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
dt << New Column( "C1", character );
Column( dt, "C1" ) << set values( letterlist[J( nr, 1, Random Integer( 26 ) )] );
dt << New Column( "C2", character );
Column( dt, "C2" ) << set values( letterlist[J( nr, 1, Random Integer( 26 ) )] );
dt << New Column( "C3", character );
Column( dt, "C3" ) << set values( letterlist[J( nr, 1, Random Integer( 26 ) )] );
dt << New Column( "C4", character );
Column( dt, "C4" ) << set values( letterlist[J( nr, 1, Random Integer( 26 ) )] );
// Method 1
dtstack = dt << Stack(
columns( :C1, :C2, :C3, :C4 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Output Table( "Stacked Values" )
);
dtstack << Summary(
Group( :Data ),
Freq( "None" ),
Weight( "None" ),
output table name( "Unique Values" )
);
//Method 2
list_of_values = Column( dt, "C1" ) << get values;
Insert Into( list_of_values, Column( dt, "C2" ) << get values );
Insert Into( list_of_values, Column( dt, "C3" ) << get values );
Insert Into( list_of_values, Column( dt, "C4" ) << get values );
Print( list_of_values );
unique_values = (Associative Array( list_of_values )) << get keys;
dtunique = New Table( "Unique Values" );
dtunique << New Column( "Unique Values", character );
Column( dtunique, "Unique Values" ) << set values( unique_values );
Betreff: Wie stapele ich mehrere Spalten in einer neuen Spalte und ignoriere doppelte Einträge?@jthi OK. Danke. Ist das die richtige Syntax?
aa = Associative Array( As Column(lastCH), As Column(2ndLastCH), As Column(3rdLastCH), As Column(4rthLastCH)) << get keys();
// Where "lastCH", "2ndlastCH", "3rdlastCH" and "4rthlastCH" are column headers for the last four columns in my data table, supplied from above
Betreff: Wie stapele ich mehrere Spalten in einer neuen Spalte und ignoriere doppelte Einträge?@SamGardner
Beide funktionieren einwandfrei, es wird jedoch eine leere Zeile angehängt, wenn die Anzahl der Zeilen nicht für jede Spalte gleich ist wie im Fall meines tatsächlichen Datensatzes.
Betreff: Wie stapele ich mehrere Spalten in einer neuen Spalte und ignoriere doppelte Einträge?wenn Sie den Code eingeben
remove from(unique_values, loc(unique_values,"")[1])
nach der Zeile, in der die Liste „unique_values“ erstellt wird, wird der Wert aus der Liste entfernt, der die leere Zeichenfolge ist.
remove from(unique_values, 1)
sollte auch funktionieren, da die Schlüssel bei der Abfrage alphabetisch sortiert sind.