Come rendere uno script indipendente dalle impostazioni della lingua?Ciao!
Ho uno script che fornisce il risultato corretto se JMP 15 è impostato sull'inglese e fornisce errori in un'altra impostazione della lingua.
Quello che sto usando nello script è
:Name( "Mean(Something)" )
e questa è la causa del problema, perché ad esempio l'impostazione della lingua tedesca la colonna a cui voglio fare riferimento è "Mittelwert (Something)". Lo stesso vale per "Std Dev" ecc. Che sono anche denominati in modo diverso in altre impostazioni della lingua. Quelle colonne che vorrei fare riferimento sono risultati di colonne di riepilogo di una tabella.
Come rendere uno skript 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?Per quanto riguarda la "buona pratica", darei sicuramente un'occhiata il documento Discovery a partire dal @hecht_jmp .
Ri: Come rendere uno script indipendente dalle impostazioni della lingua?Ian, grazie per il grido! Ma penso che la domanda di Robbb sia più su come fare riferimento a una colonna generata in una tabella di dati il cui nome è localizzato.
Robbb, questo script:
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 sia che utilizzo JMP in inglese o tedesco. In entrambi i casi stampa 58.125 nel registro. Funziona perché la colonna "Mittelwert (altezza)" viene creata con un nome alias di "Media (altezza)". 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.
Quando si cerca la colonna per nome, JMP esamina sia il nome della locale corrente sia l'alias inglese, cercando una corrispondenza.
Puoi fornirci maggiori dettagli su ciò che sta fallendo per te?
Ri: Come rendere uno script indipendente dalle impostazioni della lingua?Sicuro! Grazie per la tua risposta. È quello che pensavo. Ricordo quando ho pensato "Oh wow, JMP analizza e traduce automaticamente i nomi delle colonne di riepilogo".
Ma nel mio caso in qualche modo non funziona. L'ho rotto. Per favore prova 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.
Cambiato in tedesco
JMP riavviato 15.2.1
Esegui script
La colonna "Formula stupida" non è riempita.
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 "la colonna non può essere trovata". Hai riavviato JMP dopo aver cambiato la lingua?
Il mio script di tabella del tuo script appare come di seguito. Come vedi, non esiste un alias per la colonna della 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?La strategia dipende da diverse cose, non lo so ancora.
Quindi, se il tabulare viene creato dal tuo script, potresti già conoscere il nome corretto e puoi agire di conseguenza.
Puoi anche testare la lingua corretta e avvisare l'utente, oppure utilizzare queste informazioni nel seguente script.
Se la tabella esiste quando si avvia lo script e se ha sempre la stessa struttura, è possibile farvi riferimento dalla posizione della colonna, ovvero colonna (dt, 3) per la terza colonna.
E così via.
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. Segnalerò questo 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 questa gobba.
Per quanto riguarda l'esempio di riepilogo, dovrò esaminare il motivo per cui funziona per me e non per te. Forse è stato risolto solo di recente.
Ri: 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.