JSL zum Kopieren und Einfügen von Spalten, wie Sie es mit einem Rechtsklick auf eine Spalte tun könnenHallo zusammen,
Ich habe den Scripting Index durchsucht und konnte keine Referenz finden, wie man in den Optionen „Spalte kopieren“ und „Spalte einfügen“ Skripte erstellt.

Das Protokoll zeichnet den vergangenen Teil auf, nicht jedoch den Kopierteil.
Sieht aus, als würde der Einfügeteil nur eine neue Formel mit demselben Namen erstellen und dann die kopierten Eigenschaften aus der kopierten Spalte einfügen (ich versuche, mehrere glattere Formelspalten von einer Datentabelle in eine andere zu kopieren).
// Paste columns
Data Table("UBS") << New Column("Smoother(UBS Temp)", Numeric, "Continuous", Format("Best", 12), Formula(Es sieht also so aus, als müsste ich eine Schleife durchlaufen, um die Spaltennamen abzurufen, neue Spalten in der neuen Tabelle zu erstellen, sie umzubenennen und dann die Spalteneigenschaften zu kopieren und einzufügen.
Sofern niemand eine bessere Idee hat (und ich bin sicher, dass dies der Fall sein wird!)
Danke für alle Beiträge.
Steve
Automatisierung und SkriptingBetreff: JSL zum Kopieren und Einfügen von Spalten, wie Sie es durch Rechtsklicken auf eine Spalte tun könnenWas versuchst du zu tun? Wenn du nur Zeichenwerte kopieren möchtest (nicht die Spalteneigenschaften), würde ich Join oder Datatable-Indizierung verwenden. Stelle außerdem sicher, dass die Spalte, in die du die Werte kopierst, vom Typ Zeichen ist.
Betreff: JSL zum Kopieren und Einfügen von Spalten, wie Sie es durch Rechtsklicken auf eine Spalte tun könnenDieser Befehl scheint für Zeichenfolgenwerte nicht zu funktionieren, aber ich kann keine andere Möglichkeit finden, Zeichen aus einer Spalte zu kopieren und einzufügen. Gibt es eine andere Möglichkeit, dies für Zeichen zu tun?
Betreff: JSL zum Kopieren und Einfügen von Spalten, wie Sie es durch Rechtsklicken auf eine Spalte tun können„Spalteneigenschaften kopieren“ + „Spalteneigenschaften einfügen“ kann für mehrere Spalten verwendet werden, es könnten also zwei Zeilen sein, wenn Sie diese verwenden möchten (ich würde das höchstwahrscheinlich nicht tun und stattdessen „<< get script“ verwenden und eine Schleife über die Spalten ausführen)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Tiretread.jmp");
dt2 = New Table("test it",
New Column("T1", numeric, continuous),
New Column("T2", numeric, continuous),
New Column("T3", numeric, continuous),
Add Rows(10)
);
dt << Copy Column Properties({:MODULUS, :ELONG});
dt2 << Paste Column Properties({:T1, :T3});
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-729552" slang="en-US" mode="CREATE">Betreff: JSL zum Kopieren und Einfügen von Spalten, wie Sie es durch Rechtsklicken auf eine Spalte tun können</LINGO-SUB><LINGO-BODY id="lingo-body-729552" slang="en-US" mode="CREATE"><P>Beide Lösungen haben super funktioniert. Danke <A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/26800" target="_blank">@hogi</A> und <A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/14366" target="_blank">@jthi</A> !</P><P> </P><P>Ich muss eine Schleife erstellen, um meine Spalten durchzugehen und sie zu übertragen. Das ist zwar immer noch nicht so elegant, als hätte ich eine einzelne JSL-Zeilenzeile, die das Kopieren nachahmt, und eine für das Einfügen der ausgewählten Spalten, aber zumindest schaffe ich es jetzt.</P><P> </P><P>Danke noch einmal!<BR /><BR /></P><P>Steve</P></LINGO-BODY><LINGO-SUB id="lingo-sub-729541" slang="en-US" mode="CREATE">Betreff: JSL zum Kopieren und Einfügen von Spalten, wie Sie es durch Rechtsklicken auf eine Spalte tun können</LINGO-SUB><LINGO-BODY id="lingo-body-729541" slang="en-US" mode="CREATE"><P>Wenn es nur um die Formel geht, könnten Sie <FONT face="courier new,courier"><< get formula</FONT> - verwenden und dann den zurückgegebenen Ausdruck zum Erstellen der Spalte in der zweiten Tabelle nutzen:<BR /><BR /></P><PRE><CODE class=" language-jsl">Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "A",
Format( "Best", 12 ),
Formula( :weight - :height )
);
myformula =:a << get formula;
dtnew = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
Eval(Eval Expr(dt new << new column ("A", Formula(Expr(Name Expr(myformula))))))
Betreff: JSL zum Kopieren und Einfügen von Spalten, wie Sie es durch Rechtsklicken auf eine Spalte tun könnenIn solchen Fällen bevorzuge ich die Funktion Send() anstelle von <<
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
newcol = dt << New Column("ABC", Numeric, Continuous, Formula(:height * :weight));
colscript = Column(dt, "ABC") << get script;
Eval(EvalExpr(
Send(dt, Expr(NameExpr(colscript)))
));
Sie können Spalteneigenschaften auch per Skript kopieren/einfügen, aber ich würde << get script verwenden, da es klarer ist, was es tun soll, und es die Zwischenablage nicht durcheinander bringt.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
newcol = dt << New Column("ABC", Numeric, Continuous, Formula(:height * :weight));
dt << Copy Column Properties({:ABC});
dt << New Column("ABCD");
dt << Paste Column Properties({:ABCD});
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-729458" slang="en-US" mode="CREATE">Betreff: JSL zum Kopieren und Einfügen von Spalten, wie Sie es durch Rechtsklicken auf eine Spalte tun können</LINGO-SUB><LINGO-BODY id="lingo-body-729458" slang="en-US" mode="CREATE"><P>Oh, das ist komplizierter als ich dachte.</P><P> </P><PRE><CODE class=" language-jsl">my new table << myscript
geht nicht...
Daher muss die Nachricht entweder folgendermaßen vorbereitet werden:
Eval (EvalExpr(dt << Expr(Name Expr(myscript))))
oder
Eval(Substitute(Expr(dt << _message_), Expr(_message_), Name Expr(myscript)))
oder wechseln Sie die aktuelle Datentabelle, bevor Sie das Skript ausführen:
current data table( my new table);
myscript
Betreff: JSL zum Kopieren und Einfügen von Spalten, wie Sie es durch Rechtsklicken auf eine Spalte tun könnenDanke für den Vorschlag, @hogi. Wahrscheinlich eine dumme Frage, aber was wäre der nächste Schritt? Ich habe versucht, Spalteneigenschaften einzufügen, nachdem ich das Skript aus der Referenzspalte erhalten hatte, aber das schien nicht zu funktionieren. Ich bin für jeden Einblick in den nächsten Schritt dankbar!
Steve
Betreff: JSL zum Kopieren und Einfügen von Spalten, wie Sie es durch Rechtsklicken auf eine Spalte tun könnenSie können die Spalte abfragen - dasselbe ist für viele weitere Objekte möglich:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "A",
Format( "Best", 12 ),
Formula( :weight - :height )
);
myscript = :A << get script()