So erstellen Sie eine Zahl basierend auf einer Gruppe in einer SpalteHallo,
Ich habe eine kategoriale Spalte, die dieselbe Zeichenfolgenreihenfolge zufällig wiederholt. Ich möchte jeder Gruppe eine Nummer zuweisen, die dieselbe Zeichenfolge wie im Beispiel im Bild hat. Wie kann ich die Ergebnisspalte erstellen?

Automatisierung und SkripterstellungBetreff: So erstellen Sie eine Zahl basierend auf einer Gruppe in einer SpalteWie wäre es mit der Verwendung von „Neue Spalte neu codieren“?

Skript:
// New data table
// → Data Table( "Untitled" )
New Table( "Untitled" );
// Recode column: result
Local( {dt, col1},
dt = Data Table( "Untitled" );
dt << Begin Data Update;
col1 = dt << New Column( dt:Column 1 );
col1 << Set Name( "result" );
dt << Move Selected Columns( {col1}, after( dt:Column 1 ) );
dt << Recode Column(
dt:Column 1,
{Map Value(
_rcOrig,
{"aaa", "1", "bb", "2", "ccc", "3", "ddd", "4", "eee", "5"},
Unmatched( _rcNow )
)},
Update Properties( 1 ),
Target Column( col1 )
);
dt << End Data Update;
);Betreff: So erstellen Sie eine Zahl basierend auf einer Gruppe in einer SpalteIch sammle täglich neue Daten und werde viele neue Zeichenfolgen haben. Benötigen Sie eine bessere Möglichkeit, dies zu tun, als die Neucodierung einer neuen Spalte hart zu codieren?
Betreff: So erstellen Sie eine Zahl basierend auf einer Gruppe in einer SpalteJe nachdem, welche Art von Spalte Sie wünschen und wie viel Skripting Sie bereit sind, gibt es eine ganze Reihe von Optionen. Nachfolgend finden Sie eine Option, die funktionieren könnte
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(9),
Compress File When Saved(1),
New Column("Column 1",
Character,
"Nominal",
Set Values({"aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc"})
)
);
dt << New Column("col", Numeric, Ordinal, << Set Each Value(
vals = As Constant(Associative Array(:Column 1 << get values) << get keys);
Contains(vals, :Column 1)
));Betreff: So erstellen Sie eine Zahl basierend auf einer Gruppe in einer SpalteHallo,
Hier ist ein hässlicher Ansatz, der Ihrer ID-Liste eine numerische ID zuweist
Col Rank( :Column1, <<TIE></TIE>
Das Problem besteht darin, dass diese eindeutigen IDs nicht in Schritten von 1 erstellt werden.
Ich arbeite immer noch an einem besseren Weg, aber das könnte der Anfang sein.
Am besten.
TS
Betreff: So erstellen Sie eine Zahl basierend auf einer Gruppe in einer SpalteHallo nochmal,
Ich habe es bekommen (siehe unten):
aa = Associative Array( :GROUP );
kk = Associative Array( :GROUP ) << Get Keys;
For( i = 1, i <= N Items( kk ), i++,
aa[kk[i]] = i
);
aa[:GROUP];
Ich hoffe, dass es für Ihre Anwendung funktioniert.
Am besten,
TS
Betreff: So erstellen Sie eine Zahl basierend auf einer Gruppe in einer SpalteHier ist eine andere Möglichkeit, es zu erledigen.
Auf diese Weise wird eine Tabellenzusammenfassung erstellt und jedem eindeutigen Wert eine Nummer zugewiesen. Standardmäßig erfolgt dies in aufsteigender Reihenfolge, es kann jedoch auch eine absteigende Reihenfolge oder eine andere von Ihnen gewünschte Reihenfolge erfolgen.
Die aktuelle Nummerierungsformel kann je nach Wunsch auch für verschiedene Einheiten oder Inkremente ausgefeilter sein.
Alle Schritte können auch durch Klicken auf die Schaltflächen in den Menüs ausgeführt werden
Lassen Sie uns wissen, ob es funktioniert.
// create data table to work with
dt1 = New Table( "Untitled", Add Rows( 11 ),
New Column( "Column 1", Character, "Nominal",
Set Values({"aaa", "bb", "ccc", "aaa", "ddd", "eee", "ccc", "bb", "bb", "ccc", "aaa"})
)
);
// start working
// Data table summary
dt2 = dt1 << Summary( Group( :Column 1 ), Freq( "None" ), Weight( "None" ), Link to original data table( 0 ));
// Delete column: N Rows
dt2 << Delete Columns( :N Rows );
// New column: result
dt2 << New Column( "result", Numeric, "Continuous", Format( "Best", 12 ),Formula( Row() ));
// Delete column formula: result
dt2:result << Delete Formula;
// Update data tables
dt1 << Update(
With( Data Table( dt2 ) ),
Match Columns( :Column 1 = :Column 1 ),
Replace Columns in Main Table( None )
);
// Close Data Table: Untitled By (Column 1)
Close( dt2, no save );