Extrahieren einer Zeichenfolge aus einer Spaltenüberschrift und Hinzufügen zu einer anderenHallo,
Ich habe ein Importskript, mit dem ich Ergebnisse aus Excel in JMP importiere. Die Excel-Vorlage wird von vielen Leuten verwendet und ist für die Bearbeitung gesperrt. Wir haben zwei Ergebnisspalten in Excel, die beide „Ergebnisse – XXX“ heißen, wobei XXX durch ein Excel-Markup ersetzt wird, das angibt, was untersucht wird, sodass sich in jeder Datei Änderungen ergeben. Wir haben auch Spalten namens „JMP-Ergebnis 1“ und „JMP-Ergebnis 2“, die den Ergebnisspalten entsprechen und im Zahlenformat vorliegen. Diese verwenden wir, da JMP-Import keine wissenschaftlichen Zahlen aus Excel importieren kann. Wenn ich Excel in JMP öffne, erhalte ich etwas wie das folgende Bild:

Ich versuche, ein Skript zu schreiben, das das auf „Ergebnisse -“ folgende Wort aus der Spaltenüberschrift extrahiert und die Überschrift der JMP-Ergebnisspalte ersetzt, dabei aber sicherstellt, dass es die richtige Überschrift ersetzt. Das Ergebnis wäre also:

Ich bin mir nicht sicher, ob dies in JMP möglich ist, aber jede Hilfe wäre sehr willkommen. Ich bin mir nicht einmal sicher, wie ich mit dem Extrahieren des Endes der Zeichenfolge der Spaltenüberschrift beginnen soll, ganz zu schweigen von den späteren Schritten. Vielen Dank im Voraus.
Automatisierung und SkriptingBetreff: Einen String aus einer Spaltenüberschrift extrahieren und zu einer anderen hinzufügenHier ist eine reine JSL-Option. Sie kann (und wird) je nach Ihren Daten ziemlich leicht kaputt gehen, da ich einige Annahmen treffen musste
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
Compress File When Saved(1),
New Column("Results - DNA", Numeric, "Continuous", Format("Best", 12), Set Values([.]), ),
New Column("Results - Protein", Numeric, "Continuous", Format("Best", 12), Set Values([.])),
New Column("JMP Result 1", Numeric, "Continuous", Format("Best", 12), Set Values([.])),
New Column("JMP Result 2", Numeric, "Continuous", Format("Best", 12), Set Values([.]))
);
// Assume that you extract last word from result columns
// and results are first then jmp columns and there is equal amount
result_columns = {};
jmp_columns = {};
colnames = dt << Get Column Names("String");
For Each({colname}, colnames,
If(Starts With(colname, "Results - "),
Insert into(result_columns, Word(-1, colname, " "));
,
Insert Into(jmp_columns, colname)
)
);
For Each({{rescol, jmpcol}}, Across(result_columns, jmp_columns),
Column(dt, jmpcol) << Set Name(rescol);
);
Write();Betreff: Einen String aus einer Spaltenüberschrift extrahieren und zu einer anderen hinzufügenHallo,
Ich habe eine Testdatentabelle angehängt. Versuchen Sie dieses Skript:
dt = current data table();
for each({name,i}, dt << get column names(string),
if (contains(name, "Results -"),
new_name_string = word(2, name, "- ");
column(dt,i) << set name(substitute(name, "Results -", "Results_Excel -" ));
for each({name2,p}, dt << get column names(string),
if (contains(name2, "JMP Result"),
column(dt,p) << set name(new_name_string);
Break();
,
);
);
,
);
);
Dies sollte Ihr Ziel erreichen. Wenn nicht, informieren Sie uns bitte.
Edit: Habe gerade Jarmos großartige Lösung gesehen. Sie können diese wählen, wenn Sie die Namen der „Excel“-Spalten nicht ändern möchten.
Prost,
Jonas
Betreff: Einen String aus einer Spaltenüberschrift extrahieren und zu einer anderen hinzufügenMir ist auch eine Option ohne Skripting in den Sinn gekommen.
Gestapelte Tabelle erstellen

Letzte Wortspalte aus Label erstellen

Jetzt haben Sie eine Zuordnungstabelle

Gehen Sie zurück zu Ihrer ursprünglichen Tabelle und kodieren Sie die Spaltennamen neu

Verwenden Sie „Zuordnung für Tabelle anwenden...“


Klicken Sie auf „Neu kodieren“.


Schade, dass JMP hierfür nicht automatisch ein geeignetes Skript erstellen kann, da es die Zuordnungswerte direkt im Skript verwendet. Dies könnte also ein manueller Prozess sein, es sei denn, Sie können irgendwie eine „vollständige Zuordnungstabelle“ erstellen, um diese in das Skript einzufügen.
// Recode column names
Local({dt = Data Table("Untitled 2"), names},
names = Recode(
dt << Get Column Names(String),
{Map Value(
_rcOrig,
{"JMP Result 1", "DNA", "JMP Result 2", "Protein"},
Unmatched(_rcNow)
)}
);
For Each({name, i}, names, Column(dt, i) << Set Name(name));
);