Skript: Präfix der Zeichenfolge entfernen und geänderte Spalte in eine Excel-Datei ausgebenHallo allerseits. Ich habe den Rat unter befolgt Formel zum Parsen von Zeichenfolgen und einige andere Referenzen zum Schreiben von Daten in Dateien, die hauptsächlich auf Textblockdateien anwendbar sind, aber ich habe die gefunden
Save Excel File()
Funktion im Scripting-Index. Ich weiß nicht, was der letzte Parameter bedeutet/bewirkt? Es wird nicht erklärt. Das heißt,
Separate Rows for Each Cell Statistic( 1 )
Ist das wichtig? Es schreibt nichts in eine Datei an dem von mir angegebenen Speicherort, unabhängig davon, ob dieser Parameter vorhanden ist oder nicht.
Hier ist ein grober Überblick über mein Skript:
dt = Current Data Table();
c = Words(:ID, "_");
Write(c);
s = c[2] || "_" || c[3] || "_" || c[4] || "_" || c[5];
Write(s);
s << Save Excel File(
"$DOCUMENTS\temp.xlsx",
Separate Rows for Each Cell Statistic( 1 )
);
Deshalb versuche ich, das Präfix zu entfernen und die verbleibenden vier „Wortblöcke“ plus ihre Unterstriche beizubehalten, die ich manuell über die Zeichenfolgenverkettung wieder hinzufüge. Sehen Verkettung von Zeichenfolgen und Variablen für String-Verkettung „||“ Referenz.
Jedenfalls wird unter $DOCUMENTS\temp.xlsx keine Datei angezeigt.
Auch das, ähm, wie heißt es, Terminal, Fenster, Protokoll, gibt mir den Fehler
Subscript Range in access or evaluation of 'c[2]' , c[/*###*/2]
und ich weiß nicht warum. Als Ergebnis der von mir eingefügten Write()-Anweisungen werden keine Zeichenfolgen oder Spalten ausgegeben.
Im Grunde funktioniert also nichts so, wie es sollte. Quadrat eins, nehme ich an!
Lassen Sie mich wissen, welche Tipps Ihnen allen einfallen.
Prost,
Mike
Qualitäts- und VerfahrenstechnikBetreff: Skript: Präfix der Zeichenfolge entfernen und geänderte Spalte in Excel-Datei ausgebenFügen Sie den Datentabellenzeiger zur Spaltenfunktion hinzu und stellen Sie sicher, dass es sich um die Tabelle mit der Spalte handelt.
Spalte(dt, :id)
Es hört sich so an, als wären möglicherweise mehrere Tabellen geöffnet und JMP versucht, die aktuelle Tabelle zu verwenden, die nicht die gewünschte ist.
Wenn Sie die Teilmenge erstellen, können Sie den Tabellenzeiger für die neue Tabelle abrufen:
dtSubset = dt<Betreff: Skript: Präfix der Zeichenfolge entfernen und geänderte Spalte in Excel-Datei ausgeben
Das ist ein großartiger Rahmen; Das Problem, das ich jetzt identifiziert habe, ist ganz einfach:
Die Tabelle, mit der ich arbeite, ist eine Teilmenge der Zeilen der vollständigen Tabelle. Und wenn ich auf Column(:ID) gehe, wird die Spalte nicht gefunden, d. h
could not find column{3} in access or evaluation of 'Column' , Column/*###*/(dt:ID)Das scheint wirklich einfach zu sein, aber ich weiß nicht warum. Ich dachte, das liegt daran, dass ich eine Teilmenge der Zeilen verwende, was ich tun muss, aber ich kann herausfinden, ob das der Fall ist, indem ich das Skript in der Basistabelle ausprobiere. Einen Moment...
Nein, es scheint auch bei der vollständigen Datentabelle ein Problem zu geben.
Irgendwelche Ratschläge zum „Finden“ meiner Kolumne?
Michael
Betreff: Skript: Präfix der Zeichenfolge entfernen und geänderte Spalte in Excel-Datei ausgeben
Wenn Sie eine Funktion haben, die einen Parameter oder eine Variable akzeptiert, gilt im Allgemeinen: Wird die Funktion bei der Übergabe in einer Spalte elementweise für die Spalte ausgeführt?
Nein. Normalerweise möchten Sie, wenn Sie für jede Zeile einer Datentabelle eine Auswertung benötigen, entweder eine Formelspalte in der Datentabelle erstellen oder die verwenden Für jede Reihe() Iterator.
JMP 16 führte das ein Für jede() Funktion zum Durchlaufen von JSL-Datenstrukturen: Listen, assoziative Arrays oder Matrizen.
Betreff: Skript: Präfix der Zeichenfolge entfernen und geänderte Spalte in Excel-Datei ausgebenWenn Sie eine Funktion haben, die einen Parameter oder eine Variable akzeptiert, gilt im Allgemeinen: Wird die Funktion bei der Übergabe in einer Spalte elementweise für die Spalte ausgeführt?
Mike
Betreff: Skript: Präfix der Zeichenfolge entfernen und geänderte Spalte in Excel-Datei ausgebenDanke für die Antwort, @Thierry_S ! Ich probiere gerade Ihr Scriptlet und einige andere Dinge aus.
Für die meisten mag das nach einer supereinfachen Sache klingen, aber ich weiß eigentlich nicht, wie ich die Ausgabe für Debugging-Zwecke am besten visualisieren kann, wenn es um mehr als nur eine Einzelwertvariable geht, z. B. wie man eine einzelne Spalte in eine ausblendet Erstellen Sie eine neue Datentabelle (nur mit JSL) oder drucken Sie die Spalte im Protokoll aus oder so etwas in der Art.
Ich kann mich nicht erinnern, vielleicht habe ich das schon einmal gemacht und bin einfach nur ratlos, aber ich komme mir irgendwie albern vor, weil ich frage.
Danke noch einmal!
Mike
Betreff: Skript: Präfix der Zeichenfolge entfernen und geänderte Spalte in Excel-Datei ausgebenIch denke, dass das Speichern einer Excel-Datei ein Sonderfall für die Categorical Response Analysis Platform ist Zusätzliche kategoriale Plattformoptionen . Um eine Datentabelle als Excel-Datei zu speichern, können Sie einfach << Save(path) verwenden.
Derzeit versuchen Sie, nur eine Zeichenfolge in einer Excel-Datei zu speichern, eine Zeichenfolge, die aus der ersten Zeile der Datentabelle erstellt wird. Je nachdem, wie und was Sie speichern möchten, haben Sie unterschiedliche Optionen. Nachfolgend finden Sie eine Option, bei der die :ID-Spaltenwerte durch neue Werte ersetzt werden, wobei die Zeichen vor dem ersten _ entfernt werden:
Names Default To Here(1);
dt = New Table("Untitled 2",
Add Rows(3),
Compress File When Saved(1),
New Column("ID", Character, "Nominal", Set Values({"1_2_3_4_5_6", "2_3_4_5_6_7", "3_4_5_6_7_8"}))
);
Wait(1);
dt:ID << Set Each Value(
Substr(:ID, Contains(:ID, "_")+1)
);
dt << Save("$DOCUMENTS\test.xlsx");Sie könnten auch eine neue Spalte mit den neuen Werten erstellen, was höchstwahrscheinlich ein besserer Ansatz ist.
Betreff: Skript: Präfix der Zeichenfolge entfernen und geänderte Spalte in Excel-Datei ausgebenHallo,
Wenn ich mit Strings arbeite, bevorzuge ich die Arbeit mit stringspezifischen Funktionen (z. B. Substitute(), Munger(), Right(), Word());
Daher würde ich in Ihrem Fall die folgende Formel vorschlagen, um den ersten Teil der IDS-Zeichenfolge einschließlich der ersten Instanz des Zeichens „_“ zu entfernen:
Substitute( :IDS, Word( 1, :IDS, "_" ) || "_", "" )
Am besten,
TS