Wie macht man ein Skript unabhängig von Spracheinstellungen?Hallo!
Ich habe ein Skript, das das richtige Ergebnis liefert, wenn JMP 15 auf Englisch eingestellt ist, und es gibt Fehler in einer anderen Spracheinstellung.
Was ich im Skript verwende, ist
:Name( "Mean(Something)" )
und das ist die Ursache des Problems, denn in zB der deutschen Spracheinstellung ist die Spalte, auf die ich eigentlich verweisen möchte, "Mittelwert". Gleiches gilt für „Std Dev“ etc., die in anderen Spracheinstellungen auch anders benannt werden. Die 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, solche Zusammenfassungsspalten zu referenzieren? Gibt es eine gute Praxis?
AndereSkripterstellungBetreff: Wie macht man ein Skript unabhängig von den Spracheinstellungen?Danke! Ja, du hast Recht, es ist alles andere als hübsch. Aber in meinem Fall reicht es. Ich werde den Sprachcode in einigen if-Anweisungen verwenden.
Ich bin immer noch gespannt, was Sie über das zusammenfassende Beispiel herausfinden werden.Betreff: Wie macht man 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. Aliase für Spaltennamen werden nicht korrekt generiert. Ich werde dies als Fehler melden. In der Zwischenzeit können Sie es folgendermaßen 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.
Was das Zusammenfassungsbeispiel betrifft, muss ich untersuchen, warum es für mich und nicht für Sie funktioniert. Vielleicht wurde es erst vor kurzem behoben.
Betreff: Wie macht man ein Skript unabhängig von den Spracheinstellungen?Strategie hängt von mehreren Dingen ab, das weiß ich noch nicht.
Wenn die Tabelle also 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 Start Ihres Skripts vorhanden ist und immer die gleiche Struktur hat, können Sie sie über die Spaltenposition referenzieren, dh Spalte (dt, 3) für die dritte Spalte.
Usw.
Betreff: Wie macht man ein Skript unabhängig von den Spracheinstellungen?PS: Dein Beispiel funktioniert bei mir nicht. Spalte(dt_summ, "Mittelwert(Höhe)" )[1]; liefert "Spalte kann nicht gefunden werden". Haben Sie JMP neu gestartet, nachdem Sie die Sprache geändert haben?
Mein Tabellenskript Ihres Skripts sieht wie folgt aus. Wie Sie sehen, gibt es keinen Alias für die mittlere Spalte. Aber für N Zeilen 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 macht man 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 automatisch die Namen der Zusammenfassungsspalten.“
Aber bei mir geht das irgendwie nicht. Ich habe es zerlegt. Bitte versuchen Sie Folgendes:
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
Spalte "Dumme Formel" ist gefüllt.
Auf Deutsch umgestellt
JMP 15.2.1 neu gestartet
Skript ausführen
Spalte Dumme Formel" ist nicht gefüllt.
Betreff: Wie macht man ein Skript unabhängig von den Spracheinstellungen?Ian, danke für den Gruß! Aber ich denke, Robbbs Frage bezieht sich eher darauf, 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 auf Englisch oder Deutsch verwende. In beiden Fällen wird 58.125 in das Protokoll gedruckt. Es funktioniert, weil die Spalte "Mittelwert(height)" mit einem Aliasnamen von "Mean(height)" 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 Suchen der Spalte nach Namen untersucht JMP sowohl den aktuellen Gebietsschemanamen als auch den englischen Alias und sucht nach einer Übereinstimmung.
Können Sie uns mehr Details darüber geben, was bei Ihnen fehlschlägt?
Betreff: Wie macht man ein Skript unabhängig von den Spracheinstellungen?Was "gute Praxis" angeht, würde ich mir das auf jeden Fall ansehen das Entdeckungspapier aus @hecht_jmp .