Wie mache ich ein Skript unabhängig von den Spracheinstellungen?Hallo!
Ich habe ein Skript, das das richtige Ergebnis liefert, wenn JMP 15 auf Englisch eingestellt ist und Fehler in einer anderen Spracheinstellung liefert.
Was ich im Skript verwende, ist
:Name( "Mean(Something)" )
und das ist die Ursache des Problems, denn in der deutschen Sprache ist die Spalte, auf die ich eigentlich verweisen möchte, "etwas". Gleiches gilt für "Std Dev" etc., die auch in anderen Spracheinstellungen anders benannt sind. Diese Spalten, auf die ich verweisen möchte, sind Ergebnisse von Zusammenfassungsspalten einer Tabelle.
Wie kann man ein Skript unabhängig von Spracheinstellungen machen, wenn es darum geht, Zusammenfassungsspalten wie diese zu referenzieren? Gibt es eine gute Praxis?
AndereSkriptingBetreff: Wie mache ich ein Skript unabhängig von den Spracheinstellungen?In Bezug auf "gute Praxis" würde ich sicherlich einen Blick darauf werfen das Entdeckungspapier von @hecht_jmp .
Betreff: Wie mache ich ein Skript unabhängig von den Spracheinstellungen?Ian, danke für den Ruf! Aber ich denke, Robbbs Frage ist eher, wie man auf eine generierte Spalte in einer Datentabelle verweist, deren Name lokalisiert ist.
Robbb, dieses Skript:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt_summ = dt << Summary(
Group( :age ),
Mean( :height ),
Freq( "None" ),
Weight( "None" )
);
Column( dt_summ, "Mean(height)" )[1];
funktioniert für mich, egal ob ich JMP in Englisch oder Deutsch verwende. In beiden Fällen werden 58.125 in das Protokoll gedruckt. Dies funktioniert, weil die Spalte "Höhe" mit dem Aliasnamen "Höhe" erstellt wird. Sie können dies sehen, wenn Sie das Tabellenskript kopieren und in ein neues Skriptfenster einfügen:
New Column( ["de" => "Mittelwert(height)", "en" => "Mean(height)"],
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 1 ),<BR />// etc.
Beim Nachschlagen der Spalte nach Namen überprüft JMP sowohl den aktuellen Gebietsschemanamen als auch den englischen Alias und sucht nach einer Übereinstimmung.
Können Sie uns näher erläutern, was für Sie nicht funktioniert?
Betreff: Wie mache ich ein Skript unabhängig von den Spracheinstellungen?Sicher! Danke für deine Antwort. Das ist was ich dachte. Ich erinnere mich, als ich dachte: "Oh wow, JMP analysiert und übersetzt sogar zusammenfassende Spaltennamen automatisch."
Aber in meinem Fall funktioniert es irgendwie nicht. Ich habe es kaputt gemacht. Bitte versuchen Sie dies:
DT = Open( "$SAMPLE_DATA/Big Class.jmp" );
Table1 = DT << Tabulate(
Add Table(
Column Table( Analysis Columns( :height ), Statistics( <STRONG>Mean</STRONG> ) ), // Here another language than English is not a problem.
Row Table( Grouping Columns( :age ) )
)
);
DT2 = Table1 << Make Into Data Table;
DT2 << New Column( "Stupid Formula",
Formula(
<STRONG>:Name( "Mean(height)" )</STRONG> + 1 // Here it is a problem!
)
);
Englisch
Skript ausführen
Die Spalte "Dumme Formel" ist gefüllt.
Auf Deutsch geändert
JMP 15.2.1 neu gestartet
Skript ausführen
Die Spalte "Dumme Formel" ist nicht gefüllt.
Betreff: Wie mache ich ein Skript unabhängig von den Spracheinstellungen?PS: Dein Beispiel funktioniert bei mir nicht. Spalte (dt_summ, "Mittelwert (Höhe)") [1]; ergibt "Spalte kann nicht gefunden werden". Haben Sie JMP nach dem Ändern der Sprache neu gestartet?
Mein Tabellenskript Ihres Skripts sieht wie folgt aus. Wie Sie sehen, gibt es keinen Alias für die mittlere Spalte. Aber für N Rows gibt es. Warum das?
New Table( "Big Class Nach (age)",
Add Rows( 6 ),
New Script(
["de" => "Quelle", "en" => "Source"],
Data Table( "Big Class" ) << Summary(
Group( :age ),
Mean( :height ),
Freq( "Keine" ),
Weight( "Keine" )
)
),
New Column(
["en" => "age", "ja" => "年齢", "x-id" => "S_age_Col", "zh-CN" => "年龄"],
Numeric,
"Ordinal",
Format( "Fixed Dec", 5, 0 ),
Set Property( "Notes", "Explore data adventurously" ),
Lock( 1 )
),
New Column( ["de" => "Anzahl Zeilen", "en" => "N Rows"],
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 0 ),
Lock( 1 )
),
New Column( "Mittelwert(height)",
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 1 ),
Set Selected,
Lock( 1 )
)
)
Betreff: Wie mache ich ein Skript unabhängig von den Spracheinstellungen?Strategie hängt von mehreren Dingen ab, ich weiß es noch nicht.
Wenn die Tabelle von Ihrem Skript erstellt wird, kennen Sie möglicherweise bereits den richtigen Namen und können entsprechend handeln.
Sie können auch die richtige Sprache testen und den Benutzer warnen oder diese Informationen im folgenden Skript verwenden.
Wenn die Tabelle beim Starten Ihres Skripts vorhanden ist und immer dieselbe Struktur aufweist, können Sie sie anhand der Spaltenposition referenzieren, dh der Spalte (dt, 3) für die dritte Spalte.
Und so weiter.
Betreff: Wie mache ich ein Skript unabhängig von den Spracheinstellungen?Robbb, ich führe dies auf einem Mac aus, daher muss ich JMP neu starten, um die Sprache zu ändern.
Ich konnte Ihr Problem mit Tabulate reproduzieren. Spaltennamen-Aliase werden nicht korrekt generiert. Ich werde dies als Fehler melden. In der Zwischenzeit können Sie es wie folgt umgehen:
mean height = Match(System Service(Get Language Code),
"de", "Mittelwert(height)",<BR /> // Add more language cases here as needed
"Mean(height)"
);
DT = Open( "$SAMPLE_DATA/Big Class.jmp" );
Table1 = DT << Tabulate(
Add Table(
Column Table( Analysis Columns( :height ), Statistics( Mean ) ), // Here another language than English is not a problem.
Row Table( Grouping Columns( :age ) )
)
);
DT2 = Table1 << Make Into Data Table;
Eval(Parse(Substitute("\[
DT2 << New Column( "Stupid Formula",
Formula(
:Name("^MEAN HEIGHT") + 1 // Here it is a problem!
)
)]\",
"^MEAN HEIGHT", mean height)));
Es ist nicht schön, aber es wird dich über diesen Buckel bringen.
Für das Zusammenfassungsbeispiel muss ich untersuchen, warum es für mich und nicht für Sie funktioniert. Vielleicht wurde es erst kürzlich behoben.
Betreff: Wie mache ich ein Skript unabhängig von den Spracheinstellungen?Vielen Dank! Ja, du hast recht, es ist alles andere als hübsch. Aber in meinem Fall ist es ausreichend. Ich werde den Sprachcode in einigen if-Anweisungen verwenden.
Ich bin immer noch gespannt, was Sie über das zusammenfassende Beispiel erfahren werden.