Ausgewählte Zellen aus einer Spalte kopieren und in ausgewählte Zellen einer anderen Spalte einfügenHallo, ich bin ein JSL-Anfänger. Ich muss lernen, wie man einen Zellenblock in einer Spalte an eine andere Position in einer anderen, neu erstellten Spalte verschiebt.In diesem Fall oben in dieser neuen Spalte.
Konkret muss ich eine Reihe von Zellen in der Spalte THK auswählen, die als PRE in einer separaten PRE/POST-Spalte markiert sind, und sie über einer neuen Spalte mit der Bezeichnung THK PRE einfügen. Sie ähnelt in gewisser Weise der Funktion „Spalte teilen“, aber ich möchte die Funktion „Spalte teilen“ nicht verwenden, da ich finde, dass aufgrund eines Fehlers die Daten in der neu erstellten Spalte manchmal durcheinander angezeigt werden, wenn die Daten in einigen Zellen der THK-Spalte fehlen.
Aus einigen Beispielen in den Foren habe ich den folgenden Code zusammengestellt, der jedoch keine Werte in die neu erstellte THK PRE-Spalte einfügt.Bitte helfen Sie!Vielen Dank im Voraus.
Folgendes brauche ich:
Startdatentabelle
Ich denke, ich schreibe es vor/poste es
9.5 POST
9.8 POST
10.1 POST
11,0 PRE
11.4 VOR
10.9 VOR
So muss die Datentabelle nach diesem Vorgang aussehen:
THK | VOR/POST | THK PRE
9.5 POST 11.0
9.8 POST 11.4
10.1 POST 10.9
11,0 PRE
11.4 VOR
10.9 VOR
Das folgende Skript fügt keine Werte in die neu erstellte Spalte ein, die Spalte bleibt leer
// Pick the source data table
dt=Open("Data Table");
//Create New THK PRE column
dt << New Column( "THK PRE", Numeric, "Continuous");
Wait(1);
// Select PRE values from THK column
vals = Column(dt, "THK") << Get Rows Where(:Name("PRE/POST") == "PRE");
// Put these in the new column THK PRE
Column(dt, "THK PRE") << Set Values(vals)
Bitte helfen Sie! Vielen Dank im Voraus.Ich verwende JUMP 16.0.0
@jthi
Datenmischung und -bereinigungBetreff: Ausgewählte Zellen aus einer Spalte kopieren und in ausgewählte Zellen einer anderen Spalte einfügenHallo Txnelson, vielen Dank für die schnelle Antwort!Klappt wunderbar!Ich schätze, ich war ziemlich nah dran, konnte mir aber die Syntax nicht ganz vorstellen.
Betreff: Ausgewählte Zellen aus einer Spalte kopieren und in ausgewählte Zellen einer anderen Spalte einfügenHier ist eine Überarbeitung Ihres Skripts mit einigen zusätzlichen Anmerkungen, die Ihre Wünsche erfüllen
Names Default To Here( 1 );
// Pick the source data table
//dt=Open("Data Table");
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "THK",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9.5, 9.8, 10.1, 11, 11.4, 10.9] )
),
New Column( "PRE/POST",
Character,
"Nominal",
Set Values( {"POST", "POST", "POST", "PRE", "PRE", "PRE"} )
)
);
//Create New THK PRE column
dt << New Column( "THK PRE", Numeric, "Continuous" );
Wait( 0 );
// Find the rows PRE values from THK column
// and copy those values from the found rows
// to the vals matrix
vals = :THK[dt << get rows Where( :Name( "PRE/POST" ) == "PRE" )];
// Put these in the new column THK PRE
dt:THK PRE << Set Values( vals );Betreff: Ausgewählte Zellen aus einer Spalte kopieren und in ausgewählte Zellen einer anderen Spalte einfügenGibt es eine Möglichkeit, die ausgewählten Daten in eine neue Spalte an derselben Zeilenposition einzufügen? Oder die Werte einer neuen Spalte basierend auf der Auswahl festzulegen? So etwas in der Art?

Betreff: Ausgewählte Zellen aus einer Spalte kopieren und in ausgewählte Zellen einer anderen Spalte einfügenHier sind einige Möglichkeiten, um das zu tun, was Sie möchten.
Names Default To Here( 1 );
// Pick the source data table
//dt=Open("Data Table");
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "THK",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9.5, 9.8, 10.1, 11, 11.4, 10.9] )
),
New Column( "PRE/POST",
Character,
"Nominal",
Set Values( {"POST", "POST", "POST", "PRE", "PRE", "PRE"} )
)
);
//Create New THK PRE column
dt << New Column( "THK PRE1",
Numeric,
"Continuous",
formula( If( :"PRE/POST"n == "PRE", :THK, . ) )
);
dt << New Column( "THK PRE2", Numeric, "Continuous" );
For Each Row(
If( :"PRE/POST"n == "PRE",
:THK PRE2 = :THK,
:THK PRE2 = .
)
);
Wenn Sie möchten, dass der THK PRE-Wert 5 ist, wie in Ihrem zweiten Beispiel dargestellt, ändern Sie einfach den resultierenden Wert von :THK in 5
Betreff: Ausgewählte Zellen aus einer Spalte kopieren und in ausgewählte Zellen einer anderen Spalte einfügenVielen Dank für die Antwort. Ich hatte gehofft, dass es eine Skriptfunktion zum Einfügen gibt, die ich nicht kannte. Sieht so aus, als müsste ich jede Zeile wie von Ihnen vorgeschlagen durchlaufen, wenn die Spalte bereits andere Werte enthält.
Betreff: Ausgewählte Zellen aus einer Spalte kopieren und in ausgewählte Zellen einer anderen Spalte einfügenEtwas näher am Kopieren/Einfügen: Sie können alle Werte auf einmal abrufen und im Stapel schreiben:
Datentabellen-Indizierung
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 100 ),
New Column( "input",
Set each Value( random uniform () )
),
New Column( "variant",
Character,
set each value({"A","B"}[random integer(1,2)])
)
);
dt << New Column( "out");
rows= Where(:variant == "A");
vals = dt[rows,"input"];
dt[rows,"out"]=vals;
Das ist ähnlich wie
dt:THK PRE << Set Values( vals );
Der Unterschied: Über die Indizierung der Datentabelle können Sie genau festlegen, in welche Zeilen geschrieben werden soll.
Das Festlegen von Werten beginnt bei Zeile 1 und füllt so viele Zeilen, wie Werte im Array vorhanden sind.