スクリプトを言語設定から独立させる方法は?こんにちは!
JMP 15が英語に設定されていて、別の言語設定でエラーが発生した場合に正しい結果が得られるスクリプトがあります。
スクリプトで使用しているのは
:Name( "Mean(Something)" )
これが問題の原因です。たとえば、ドイツ語の設定では、実際に参照したい列が「Mittelwert(Something)」であるためです。 他の言語設定でも異なる名前が付けられている「標準偏差」などについても同じことが言えます。 参照したい列は、表の要約列の結果です。
このような要約列を参照する場合、スクリプトを言語設定から独立させるにはどうすればよいですか? 良い習慣はありますか?
その他スクリプティングRe:スクリプトを言語設定から独立させる方法は?「グッドプラクティス」については、確かに見ていきますディスカバリーペーパーから@hecht_jmp 。
Re:スクリプトを言語設定から独立させる方法は?イアン、叫び声をありがとう! しかし、Robbbの質問は、名前がローカライズされているデータテーブルで生成された列を参照する方法に関するものだと思います。
Robbb、このスクリプト:
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];
JMPを英語でもドイツ語でも使用できます。 どちらの場合も、58.125をログに出力します。 これは、列「Mittelwert(height)」がエイリアス名「Mean(height)」で作成されているために機能します。 テーブルスクリプトをコピーして新しいスクリプトウィンドウに貼り付けると、次のように表示されます。
New Column( ["de" => "Mittelwert(height)", "en" => "Mean(height)"],
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 1 ),<BR />// etc.
JMPは、名前で列を検索するときに、現在のロケール名と英語のエイリアスの両方を調べて、一致するものを探します。
何が失敗しているのか、詳しく教えてください。
Re:スクリプトを言語設定から独立させる方法は?承知しました! お返事をありがとうございます。 私もそう思っていました。 「すごい、JMPはサマリー列名を自動的に分析して変換する」と思ったときのことを覚えています。
しかし、私の場合、それはどういうわけか機能しません。 私はそれを分解しました。 これを試してください:
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!
)
);
英語
スクリプトを実行する
「バカフォーミュラ」欄に記入。
ドイツ語に変更
JMP15.2.1を再起動しました
スクリプトを実行する
愚かな式」の列は埋められていません。
Re:スクリプトを言語設定から独立させる方法は?PS:あなたの例は私にはうまくいきません。 Column(dt_summ、 "Mean(height)")[1]; 「列が見つかりません」という結果になります。 言語を変更した後、JMPを再起動しましたか?
スクリプトのテーブルスクリプトは次のようになります。 ご覧のとおり、平均列のエイリアスはありません。 しかし、N行にはあります。 何故ですか?
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 )
)
)
Re:スクリプトを言語設定から独立させる方法は?戦略はいくつかのことに依存します、私はまだ知りません。
したがって、表がスクリプトによって作成されている場合は、正しい名前をすでに知っている可能性があり、それに応じて行動することができます。
また、適切な言語をテストしてユーザーに警告するか、次のスクリプトでこの情報を使用することもできます。
スクリプトの開始時にテーブルが存在し、その構造が常に同じである場合は、列の位置、つまり3番目の列のcolumn(dt、3)でテーブルを参照できます。
等々。
Re:スクリプトを言語設定から独立させる方法は?Robbb、私はこれをMacで実行しているので、言語を変更するにはJMPを再起動する必要があります。
Tabulateで問題を再現することができました。 列名エイリアスが正しく生成されていません。 これをバグとして報告します。 それまでの間、次のように回避できます。
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)));
きれいではありませんが、このこぶを乗り越えることができます。
要約の例については、なぜそれがあなたではなく私のために機能するのかを調べる必要があります。 おそらくそれは最近修正されたばかりです。
Re:スクリプトを言語設定から独立させる方法は?ありがとう! はい、あなたは正しいです、それはきれいから遠く離れています。 しかし、私の場合はそれで十分です。 一部のifステートメントで言語コードを使用します。
要約の例についてあなたが何を見つけるのか、私はまだ興味があります。