So verwenden Sie Columnlist zum Stapeln vieler Spalten<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo zusammen, ich möchte die Spaltennamen auslesen und als Spaltenliste speichern ... Kann ich mithilfe dieser Liste diese mehreren Spalten in einem einzigen Befehl stapeln, anstatt sie manuell zu stapeln, wie im unten gezeigten Code?
dt_L5 << Stack(
Säulen(
:Name( "MISC_L5_Test230_2(1)" ),
:Name( "MISC_L5_Test230_2(2)" ),
:Name( "MISC_L5_Test230_2(3)" ),
:Name( "MISC_L5_Test230_2(4)" ),
:Name( "MISC_L5_Test230_2(5)" ),
:Name( "MISC_L5_Test230_2(6)" ),
:Name( "MISC_L5_Test230_2(7)" ),
:Name( "MISC_L5_Test230_2(8)" ),
.
.
.
.
:Name( "MISC_L5_Test230_2(125)" )
),
Spalte „Quellenbeschriftung“ („Label“),
Gestapelte Datenspalte („Daten“),
Ausgabetabelle( „L5“)
);
Ich möchte so etwas machen:
clist=dt_L5<
ncols = N Items(clist);
dt_L5 << Stack(
Säulen(
for(i=1,i<=ncols,i++,
name_list = clist ;
/* WIE SOLL ICH DAS AUFRUFEN? :Name("name_list") " Hier ?? */
);
Spalte „Quellenbeschriftung“ („Label“),
Gestapelte Datenspalte („Daten“),
Ausgabetabelle( „L5“)
);
Betreff: Wie man mit Columnlist viele Spalten stapelt
Hallo,
Sieht Ihr endgültiges Drehbuch in etwa so aus?
Globale löschen (); /* löscht residenten Speicher aus vorherigen Läufen*/
/* Öffne deine Datei*/
dt=open(
Datei auswählen(
„Wählen Sie eine *.csv-Datei aus“,
Aktuelles Verzeichnis abrufen(),
{"Alle JMP-Dateien|jmp;jsl;jrn;csv;txt", "Alle Dateien|*"}
)
);
warte(0);
nc_dt = N Col (); /*ruft die Anzahl der Spalten in einer Datei ab*/
warte(0);
clist = dt < ncols = N Items(clist);
warte(0);
tlist={};
for(i=2,i<=ncols,i++,
insertinto(tlist,clist );
);
warte(0);
dt2 << Stack(
columns(eval(tlist)),
Spalte „Quellenbeschriftung“ („Label“),
Gestapelte Datenspalte („Daten“),
Ausgabetabelle( „DT5“)
);
Betreff: Wie man mit Columnlist viele Spalten stapeltGroßartig! Danke MS... Ich habe JMP8.0, vielleicht ist das das Problem
Betreff: Wie man mit Columnlist viele Spalten stapeltOK. Bei mir funktioniert es auch ohne eval(). JMP 9.0.3 für Mac.
Dies funktioniert sogar, dh das Erstellen der Liste innerhalb des columns()-Arguments. Kann praktisch sein, wenn Sie den Parameter später im Skript nicht benötigen. Die klare Angabe von Variablen erleichtert jedoch das Lesen und Debuggen des Codes.
dt1_L0 << Stapel (
Säulen ( dt1_L0 << Spaltennamen abrufen ) ,
Spalte „Quellenbeschriftung“. ( "Etikett" ) ,
Gestapelte Datenspalte ( "Daten" ) ,
Ausgabetabelle ( „L5“ )
) ;
Betreff: Wie man mit Columnlist viele Spalten stapeltEine Suche in diesem Forum hat mich zur Antwort geführt ..... eval(list) muss verwendet werden.
collist = dt1_L5 << Spaltennamen abrufen ;
dt1_L0 << Stapel (
Säulen ( evalu ( collist ) ) ,
Spalte „Quellenbeschriftung“. ( "Etikett" ) ,
Gestapelte Datenspalte ( "Daten" ) ,
Ausgabetabelle ( „L5“ )
) ;
Danke für Ihre Unterstützung!
Betreff: Wie man mit Columnlist viele Spalten stapeltNoch einmal vielen Dank! ... Nach dem Stack-Befehl erhalte ich die folgende Meldung im Protokollfenster
„Spalte beim Zugriff oder bei der Auswertung von ‚Bad Argument‘ nicht gefunden
Leer()"
Und ich sehe keine gestapelte Tabellenausgabe ... :-s Ich schätze Ihre Hilfe wirklich!
So verwenden Sie Columnlist zum Stapeln vieler SpaltenEntweder konventionell so:
tlist = {} ;
für ( ich = 1 , ich <= ncols , ich ++,
Wenn ( ich > 3 ,
einfügen in ( tlist , collist [ ich ]) ;
) ;
) ;
oder ohne Bedingung, aber ein modifizierter Anfangsbuchstabe ich :
tlist = {} ;
für ( ich =4 , ich <= ncols , ich ++,
einfügen in ( tlist , collist [ ich ]) ;
) ;
Betreff: Wie man mit Columnlist viele Spalten stapeltEtwas wie das ?? ....
collist = dt1_L5 << Spaltennamen abrufen ;
/*Die Absicht hier ist, eine neue Liste zu speichern, indem die ersten drei aus der vorherigen Liste gelöscht werden*/
ncols = N Items(collist);
for(i=1;i<=ncols;i++,
if(i>3,
tlist=collist ;
);
);
dt1_L0 << Stapel (
Säulen ( ( tlist ) ) ,
Spalte „Quellenbeschriftung“. ( "Etikett" ) ,
Gestapelte Datenspalte ( "Daten" ) ,
Ausgabetabelle ( „L5“ )
) ;
Ich weiß nicht einmal, ob die „Wenn“-Aussage hier richtig ist ... bitte entschuldigen Sie meine Unwissenheit
So verwenden Sie Columnlist zum Stapeln vieler SpaltenHallo MS,
Danke für die schnelle Antwort. Ich bin ein JSL-Neuling und kenne mich daher nicht mit der Sprache aus. Gut zu wissen, dass der Stack die Liste als Argument akzeptiert.
Kann ich die Frage weiter ausbauen und fragen: Wie können wir nur wenige zu stapelnde Spalten aus der Liste auswählen? Ich möchte beispielsweise nicht die ersten drei Spalten stapeln. Kann ich zu diesem Zweck eine neue Liste erstellen, in der die erforderlichen Spaltennamen gespeichert werden (die ersten drei Spaltennamen werden aus der Kollist gelöscht)?
Ja, ich habe eine Lösung für meinen vorherigen Eintrag gefunden, also habe ich ihn gelöscht
Vielen Dank!
Betreff: Wie man mit Columnlist viele Spalten stapeltStack verwendet eine Liste als Argument, sodass dies hier viel einfacher möglich ist.
collist = dt1_L5 << Spaltennamen abrufen ;
dt1_L0 << Stapel (
Säulen ( ( collist ) ) ,
Spalte „Quellenbeschriftung“. ( "Etikett" ) ,
Gestapelte Datenspalte ( "Daten" ) ,
Ausgabetabelle ( „L5“ )
) ;
Vermeiden Sie For-Schleifen innerhalb von Plattformbefehlen. Übrigens habe ich versucht, eine Antwort auf Ihre vorherige Frage einzureichen, diese wurde jedoch gelöscht, bevor ich auf „Antwort hinzufügen“ geklickt habe. Wahrscheinlich haben Sie bereits eine Lösung gefunden, aber hier ist meine Meinung dazu. Auch hier funktionieren For-Schleifen innerhalb von Plattformen möglicherweise nicht immer, da einige Befehle das Argument möglicherweise nicht auswerten (z. B. ist eine Zeichenfolge in Anführungszeichen erforderlich).
Monatsliste = { 4 , 5 , 7 , 9 , 11 , 12 } ;
Wind = Neues Fenster ( „Bivariat“ ,
dt1_L0 << Bivariat ( Y ( : Daten ) , X ( : Preis ) , Von ( : MONAT ) )
) ;
Für ( ich = 1 , ich <= N Artikel ( Monatsliste ) , ich ++,
Wind [ 1 , ich , Framebox ( 1 )] << { Rahmengröße ( 633 , 249 ) ,
Zeilenlegende ( : BÖDEN ,
Farbthema ( „JMP-Standard“ ) ,
Marker-Thema ( "Standard" ) ,
)}
) ;