Neue Spalten erstellen und Formel basierend auf den ursprünglichen Spaltenzellen einfügenHallo,
Ich bin ein unerfahrener JMP-Scriptor und versuche mein erstes Larg (er) -Skript zu schreiben. Ich habe Probleme mit einem Teil. Folgendes versuche ich zu tun: Ich habe verschiedene Datentabellen, in denen ich dieses Skript verwenden werde. Ich möchte, dass das Skript alle Spalten mit Ausnahme der ersten Spalte betrachtet (Spalten- und Zeilennummern variieren für jede Datentabelle) und eine neue Spalte für jede bereits in der Tabelle vorhandene Spalte erstellen. Ich möchte, dass der Name jeder neuen Spalte mit der der ursprünglichen Spalte übereinstimmt, jedoch mit einem "_code" am Ende und vorzugsweise neben der ursprünglichen Spalte in der Tabelle positioniert ist. In jeder neuen Spalte möchte ich, dass die Formel eine if / then-Anweisung ist. Wenn "Spalte A" den Text "<" in der Zelle hat, dann 0, sonst 1.
Ich hoffe, meine Erklärung macht Sinn. Ich habe mein Skript gepostet, obwohl es bei Zeile 8 anscheinend kaputt zu sein scheint, und ich bin mir nicht sicher, warum.
Danke für jede Hilfe!
Lacey
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 2, i <= nitems( col_list ), i++,
data_col = ":" || col_list[i];
code_col = col_list[i] || "_Code";
str = evalinsert (
"\[dt << New Colum ("^code_col^", Numeric, Continuous,
Format("Best",12),
Formula(If( Contains( "^code_col^", "<" ),
0,
1
)));
);]\");
eval(parse(str));
);Betreff: Erstellen neuer Spalten und Einfügen von Formeln basierend auf den ursprünglichen SpaltenzellenJa, das habe ich zum arbeiten bekommen. Ich danke dir sehr!
Betreff: Erstellen neuer Spalten und Einfügen von Formeln basierend auf den ursprünglichen SpaltenzellenDie Funktion: Name () dient zur Behandlung dieses Problems. Nachfolgend finden Sie eine Änderung, die ich an Ihrem Skript vorgenommen habe, von der ich glaube, dass sie das Problem lösen wird. Ich habe diese Modifikation nicht getestet, aber ich denke, dass es funktionieren wird. Wenn nicht, sollten Sie in der Lage sein zu sehen, was ich versuche, und Sie sollten in der Lage sein, es zum Laufen zu bringen.
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 13, i <= N Items( col_list ), i++,
Eval(
Substitute(
Expr(
Column(col_list[i]) << Data Type( Character );
dt << Add Multiple Columns( __NewColName__, 1, after( __OrigCol__ ), Numeric );
Column( __NewColName__ ) << set formula( If( Contains( __OrigCol__, "<" ), 1, 0 ) );
),
Expr( __NewColName__ ), col_list[i] || "_Code" ,
Expr( __OrigCol__ ), Parse( ":Name(\!"" || col_list[i] || "\!:)" )
)
)
);Betreff: Erstellen neuer Spalten und Einfügen von Formeln basierend auf den ursprünglichen SpaltenzellenHallo Jim,
Ich versuchte, das Skript an einer neuen Datentabelle auszuprobieren, und ich hatte ein Problem mit meinen Spaltennamen. Ich beschäftige mich mit Umgebungsdaten, und oft haben die Namen der Analyten (dh Spaltennamen) Symbole wie "-", "[", "]", "(", ")" und / oder " , ". Beim Ausführen des Skripts wurde in der ersten Spalte "3-Methyl-1-buten" ein Fehler angezeigt. Gibt es ein Update für dieses Problem?
Vielen Dank,
Lacey
Betreff: Erstellen neuer Spalten und Einfügen von Formeln basierend auf den ursprünglichen SpaltenzellenDas hat super funktioniert! Vielen Dank!
Es war mein Fehler, dass ich diese "Spalte 13" in der Datentabelle verließ. Ich habe nur sichergestellt, dass meine Wenn-Erklärung funktioniert hat, und ich habe vergessen, sie zu löschen, als ich sie online stellte. Also habe ich das einfach aus meiner Datentabelle gelöscht, die 13 in dem wunderbaren Skript, das Sie geschickt haben, in eine 2 geändert und dann funktionierte es wie ein Zauber.
Ich danke dir sehr!
Lacey
Betreff: Erstellen neuer Spalten und Einfügen von Formeln basierend auf den ursprünglichen SpaltenzellenHier ist eine Änderung Ihres Codes, von der ich glaube, dass sie alle Ihre Anforderungen erfüllt. Ein Punkt, mit dem ich mich beschäftigen musste, ist, dass die Spalten, mit denen Sie beginnen (2-13), Zeichen sein müssen, damit die Formel nicht fehlerhaft aussieht. Die Spalte 13 führt einen Fehler aus dem Skript aus, da es sich um eine Formelspalte handelt, die nicht in ein Zeichen geändert werden kann. Sobald die Formel ausgeführt wird, wird die Spalte numerisch.
Names Default To Here( 1 );
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = 13, i <= N Items( col_list ), i++,
Eval(
Substitute(
Expr(
Column(col_list[i]) << Data Type( Character );
dt << Add Multiple Columns( __NewColName__, 1, after( __OrigCol__ ), Numeric );
Column( __NewColName__ ) << set formula( If( Contains( __OrigCol__, "<" ), 1, 0 ) );
),
Expr( __NewColName__ ), col_list[i] || "_Code",
Expr( __OrigCol__ ), Parse( ":" || col_list[i] )
)
)
);