スクリプトを言語設定から独立させるには?こんにちは!
JMP 15 が英語に設定されている場合に正しい結果が得られ、別の言語設定ではエラーが発生するスクリプトがあります。
スクリプトで使用しているのは
:Name( "Mean(Something)" )
それが問題の原因です。たとえば、ドイツ語の設定では、実際に参照したい列は「Mittelwert(Something)」です。 他の言語設定でも名前が異なる「Std Dev」などについても同様です。 参照したい列は、表形式の集計列の結果です。
このような集計列を参照する場合、スクリプトを言語設定から独立させるにはどうすればよいですか? 良い習慣はありますか?
他のスクリプティングRe: スクリプトを言語設定から独立させる方法は?ありがとう! はい、あなたは正しいです、それはきれいからはほど遠いです。 しかし、私の場合はそれで十分です。 いくつかの if ステートメントで言語コードを使用します。
まとめの例で何が分かるのか、今でも興味があります。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: スクリプトを言語設定から独立させる方法は?戦略はいくつかのことに依存しますが、まだわかりません。
そのため、テーブルがスクリプトによって作成された場合、正しい名前を既に知っている可能性があり、それに応じて行動できます。
また、適切な言語をテストしてユーザーに警告するか、この情報を次のスクリプトで使用することもできます。
スクリプトの開始時にテーブルが存在し、常に同じ構造を持っている場合は、列の位置、つまり 3 番目の列の column(dt, 3) で参照できます。
等々。
Re: スクリプトを言語設定から独立させる方法は?PS:あなたの例は私にはうまくいきません。 Column( dt_summ, "平均値(身長)" )[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: スクリプトを言語設定から独立させる方法は?もちろん! お返事をありがとうございます。 私もそう思っていました。 「おお、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!
)
);
英語
スクリプトを実行
「愚かな数式」欄が埋まっています。
ドイツ語に変更
JMP 15.2.1を再起動しました
スクリプトを実行
愚かな式」欄は未記入です。
Re: スクリプトを言語設定から独立させる方法は?イアン、声をかけてくれてありがとう! しかし、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: スクリプトを言語設定から独立させる方法は?「グッドプラクティス」に関しては、私は確かに見ていきます発見論文から@hecht_jmp .