Come rendere uno script indipendente dalle impostazioni della lingua?Ciao!
Ho uno script che fornisce il risultato corretto se JMP 15 è impostato su inglese e fornisce errori in un'altra impostazione della lingua.
Quello che sto usando nella sceneggiatura è
:Name( "Mean(Something)" )
e questa è la causa del problema, perché ad esempio nell'impostazione della lingua tedesca la colonna a cui voglio effettivamente fare riferimento è "Mittelwert (Qualcosa)". Lo stesso vale per "Std Dev" ecc., che sono anche denominati in modo diverso in altre impostazioni della lingua. Quelle colonne a cui vorrei fare riferimento sono i risultati delle colonne di riepilogo di un tabulare.
Come rendere uno script indipendente dalle impostazioni della lingua quando si tratta di fare riferimento a colonne di riepilogo come questa? C'è una buona pratica?
AltroScriptingRi: Come rendere uno script indipendente dalle impostazioni della lingua?Grazie! Sì, hai ragione, è tutt'altro che carino. Ma è sufficiente nel mio caso. Userò il codice della lingua in alcune istruzioni if.
Sono ancora curioso di sapere cosa scoprirai sull'esempio riassuntivo.Ri: Come rendere uno script indipendente dalle impostazioni della lingua?Robbb, lo sto eseguendo su un Mac, quindi devo riavviare JMP per cambiare lingua.
Sono stato in grado di riprodurre il tuo problema con Tabulate. Non sta generando correttamente gli alias dei nomi di colonna. Lo segnalerò come un bug. Nel frattempo, puoi aggirare il problema in questo modo:
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)));
Non è carino, ma ti farà superare questo ostacolo.
Per quanto riguarda l'esempio di riepilogo, dovrò esaminare perché funziona per me e non per te. Forse è stato risolto solo di recente.
Ri: Come rendere uno script indipendente dalle impostazioni della lingua?La strategia dipende da diverse cose, non lo so ancora.
Quindi, se il tabulare viene creato dal tuo script, potresti già conoscere il nome giusto e puoi agire di conseguenza.
Puoi anche verificare la lingua corretta e avvisare l'utente oppure utilizzare queste informazioni nel seguente script.
Se la tabella esiste all'avvio dello script e ha sempre la stessa struttura, puoi farvi riferimento dalla posizione della colonna, ad esempio column(dt, 3) per la terza colonna.
E così via.
Ri: Come rendere uno script indipendente dalle impostazioni della lingua?PS: il tuo esempio non funziona per me. Colonna( dt_summ, "Media(altezza)" )[1]; restituisce "impossibile trovare la colonna". Hai riavviato JMP dopo aver cambiato la lingua?
Il mio script di tabella del tuo script è simile al seguente. Come vedi, non c'è un alias per la colonna media. Ma per N righe c'è. Perché?
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 )
)
)
Ri: Come rendere uno script indipendente dalle impostazioni della lingua?Sicuro! Grazie per la tua risposta. È quello che pensavo. Ricordo quando pensai "Oh wow, JMP analizza e traduce automaticamente anche i nomi delle colonne di riepilogo".
Ma nel mio caso in qualche modo non funziona. L'ho rotto. Si prega di provare questo:
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!
)
);
Inglese
Esegui script
La colonna "Formula stupida" è piena.
Modificato in tedesco
JMP riavviato 15.2.1
Esegui script
La colonna Formula stupida" non è piena.
Ri: Come rendere uno script indipendente dalle impostazioni della lingua?Ian, grazie per il grido! Ma penso che la domanda di Robbb riguardi più come fare riferimento a una colonna generata in una tabella di dati il cui nome è localizzato.
Robbb, questo copione:
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];
funziona per me se sto usando JMP in inglese o tedesco. In entrambi i casi stampa 58.125 nel log. Funziona perché la colonna "Mittelwert(height)" viene creata con un nome alias di "Mean(height)". Puoi vederlo se copi lo script della tabella e lo incolli in una nuova finestra di script:
New Column( ["de" => "Mittelwert(height)", "en" => "Mean(height)"],
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 1 ),<BR />// etc.
Durante la ricerca della colonna in base al nome, JMP esamina sia il nome locale corrente che l'alias inglese, alla ricerca di una corrispondenza.
Puoi darci maggiori dettagli su cosa sta fallendo per te?
Ri: Come rendere uno script indipendente dalle impostazioni della lingua?Per quanto riguarda la "buona pratica", darei sicuramente un'occhiata il documento Scoperta da @hecht_jmp .