Benötigen Sie einen Vorschlag zur besten Möglichkeit, eine Tabellenspalte für eine ID hinzuzufügen, die dies tut.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Grundsätzlich habe ich diesen Originaltisch:
| Spalte A | Spalte B | Spalte A | Spalte B |
| ein | e | ich | m |
| b | f | j | n |
| c | G | k | O |
| d | h | l | p |
Nun möchte ich eine andere Tabelle mit einer "neuen Spalten-ID" erstellen, die so aussieht
| Neue Spalten-ID | Spalte A | Spalte B | Spalte A | Spalte B |
| 1 | ein | e | ich | m |
| 1 | b | f | j | n |
| 1 | c | G | k | O |
| 1 | d | h | l | p |
| 2 | ein | e | ich | m |
| 2 | b | f | j | n |
| 2 | c | G | k | O |
| 2 | d | h | l | p |
| 3 | ein | e | ich | m |
| 3 | b | f | j | n |
| 3 | c | G | k | O |
| 3 | d | h | l | p |
| x | ein | e | ich | m |
| x | b | f | j | n |
| x | c | G | k | O |
| x | d | h | l | p |
Was ich jetzt im Kopf habe, ist das Klonen der ursprünglichen Tabelle durch Erstellen einer Teilmenge. Und bei dieser Untermenge füge ich die "neue Spalten-ID" mit einem bestimmten Wert hinzu (der gleiche für alle Zeilen). Ich wiederhole den gleichen Vorgang und erstelle so viele Teilmengen wie nötig (mit jeder Teilmenge wird eine "neue Spalten-ID" hinzugefügt). Nachdem ich fertig bin, kann ich einfach alle Subsets in einer Tabelle zusammenfassen.
Ich möchte wissen, ob Sie bessere Ideen haben, die Sie teilen können.
Re: Benötigen Sie einen Vorschlag, wie Sie eine Tabellenspalte für eine ID hinzufügen, die dies tut ...@Ian und @ms Danke für Ihre guten Vorschläge. In meinem vorliegenden Skript füge ich diesen Vorschlag von @Ian (mit einer Mischung aus @ms) ein.
Re: Benötigen Sie einen Vorschlag, wie Sie eine Tabellenspalte für eine ID hinzufügen, die dies tut ...Wie so oft ist Kürze eine Tugend!
Ich mochte Marcus 'Weg so sehr, dass ich daraus eine Funktion zur späteren Wiederverwendung gemacht habe:
NamesDefaultToHere ( 1 ) ;
// Beispieldaten
dt1 = NewTable ( "Quelldaten" .
NewColumn ( "EIN" . Numerisch . Kontinuierlich . Formel ( RandomNormal ())) .
NewColumn ( "B" . Numerisch . Kontinuierlich . Formel ( RandomInteger ( 1 . 10 ))) .
Zeilen hinzufügen ( 6 ) ;
) ;
// Tabelle 'dt' 'n' mal klonen. . .
cloneTable =
Funktion ({ dt . n } . { Default Local } .
Tische = Wiederholen ({ dt } . n - 1 ) ;
new_dt = dt << verketten ( Tische ) ;
new_dt << Name einsetzen (( dt << getName ) || "geklont" || Verkohlen ( n ) || "mal" ) ;
idCol = new_dt << newColumn ( "ICH WÜRDE" . Numerisch . Nominal . Formel ( Decke ( Reihe () / NRow ( dt )))) ;
idCol << deleteFormula ;
new_dt << moveSelectedColumns ({ idCol } . "ToFirst" )
) ;
dt2 = cloneTable ( dt1 . 20 ) ;
Re: Benötigen Sie einen Vorschlag, wie Sie eine Tabellenspalte für eine ID hinzufügen, die dies tut ...Sie müssen keine Teilmengen erstellen, um mehrere Kopien zu verketten. Sie können die Originaltabelle einfach mehrmals im Verkettungsdialogfeld hinzufügen. Wenn die neue ID ein Zähler ist, kann eine Spaltenformel zum Generieren der ID verwendet werden.
Ein jsl-Beispiel:
// dt n mal stapeln
dt = Aktuelle Datentabelle () ;
n = 10 ;
Tische = Wiederholen ({ dt } . n - 1 ) ;
new_dt = dt << verketten ( Tische ) ;
new_dt << Neue Spalte ( "Neue Spalten-ID" . Numerisch . Formel ( Decke ( Reihe () / 4 ))) ;
Re: Benötigen Sie einen Vorschlag, wie Sie eine Tabellenspalte für eine ID hinzufügen, die dies tut ...Bitte finden Sie eine Alternative, aber ich bin mir nicht sicher, ob man sagen kann, es sei "besser":
NamesDefaultToHere ( 1 ) ;
// Beispieldaten (numerisch!)
dt1 = NewTable ( "Quelldaten" .
NewColumn ( "EIN" . Numerisch . Kontinuierlich . Formel ( RandomNormal ())) .
NewColumn ( "B" . Numerisch . Kontinuierlich . Formel ( RandomInteger ( 1 . 10 ))) .
Zeilen hinzufügen ( 6 ) ;
) ;
// Klonen Sie die Daten in dt1 'n1' -Zeiten
n1 = 2 ;
n2 = NRow ( dt1 ) ;
Quelle = dt1 << getAllColumnsAsMatrix ;
Ziel = [] ;
zum ( ich = 1 . ich <= 2 . ich ++ Ziel = VConcat ( Ziel . Quelle )) ;
// Eine ID-Spalte als Vektor erstellen
Ich würde = Aufsteigend sortieren ( Wiederholen (( 1 :: n1 ) `, n2 )) ;
// Montiere den Schlusstisch
Cols = Einfügen ( dt1 << getColumnNames ( String ) . "ICH WÜRDE" . 1 ) ;
dt2 = AsTable ( Ich würde || Ziel . << ColumnNames ( Cols )) ;
dt2 << Name einsetzen (( dt1 << getName ) || "geklont" || Verkohlen ( n1 ) || "mal" ) ;
Wenn die Daten nicht alle numerisch sind, funktioniert 'Get All Columns As Matrix' immer noch, Sie haben jedoch die zusätzliche Aufgabe, herauszufinden, wie Sie beim Assemblieren von dt2 die Werte wieder in Character abbilden.