¿Cómo hacer que un script sea independiente de la configuración de idioma?¡Hola!
Tengo una secuencia de comandos que da el resultado correcto si JMP 15 está configurado en inglés y da errores en otra configuración de idioma.
Lo que estoy usando en el script es
:Name( "Mean(Something)" )
y esa es la causa del problema, porque, por ejemplo, en el idioma alemán, la columna a la que realmente quiero hacer referencia es "Mittelwert (Algo)". Lo mismo ocurre con "Std Dev", etc., que también se nombran de manera diferente en otras configuraciones de idioma. Esas columnas a las que me gustaría hacer referencia son resultados de columnas de resumen de una tabla.
¿Cómo hacer que un script sea independiente de la configuración de idioma cuando se trata de hacer referencia a columnas de resumen como esta? ¿Hay una buena práctica?
Otrosecuencias de comandosRe: ¿Cómo hacer que un script sea independiente de la configuración de idioma?¡Gracias! Sí, tienes razón, está lejos de ser bonito. Pero es suficiente en mi caso. Usaré el código de idioma en algunas sentencias if.
Todavía tengo curiosidad por lo que descubrirá sobre el ejemplo de resumen.Re: ¿Cómo hacer que un script sea independiente de la configuración de idioma?Robbb, estoy ejecutando esto en una Mac, así que debo reiniciar JMP para cambiar de idioma.
Pude reproducir su problema con Tabulate. No está generando alias de nombre de columna correctamente. Reportaré esto como un error. Mientras tanto, puedes solucionarlo así:
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)));
No es bonito, pero te ayudará a superar este bache.
En cuanto al ejemplo del Resumen, tendré que investigar por qué funciona para mí y no para usted. Tal vez fue arreglado recientemente.
Re: ¿Cómo hacer que un script sea independiente de la configuración de idioma?La estrategia depende de varias cosas, aún no lo sé.
Entonces, si su secuencia de comandos crea el tabular, es posible que ya conozca el nombre correcto y pueda actuar en consecuencia.
También puede probar el idioma correcto y advertir al usuario, o usar esta información en el siguiente script.
Si la tabla existe al iniciar su secuencia de comandos, y si siempre tiene la misma estructura, puede hacer referencia a ella por la posición de la columna, es decir, columna (dt, 3) para la tercera columna.
Y así.
Re: ¿Cómo hacer que un script sea independiente de la configuración de idioma?PD: Tu ejemplo no me funciona. Columna( dt_summ, "Media(altura)" )[1]; produce "no se puede encontrar la columna". ¿Reinició JMP después de cambiar el idioma?
Mi secuencia de comandos de tabla de su secuencia de comandos se ve a continuación. Como puede ver, no hay un alias para la columna media. Pero para N Rows sí lo hay. ¿Porqué es eso?
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: ¿Cómo hacer que un script sea independiente de la configuración de idioma?¡Por supuesto! Gracias por su respuesta. Es lo que pensaba. Recuerdo cuando pensé "Vaya, JMP incluso analiza y traduce automáticamente los nombres de las columnas de resumen".
Pero en mi caso de alguna manera no funciona. Lo rompí. Por favor, intente esto:
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!
)
);
inglés
Ejecutar guión
La columna "Fórmula estúpida" está llena.
cambiado a alemán
JMP 15.2.1 reiniciado
Ejecutar guión
La columna "Fórmula estúpida" no está llena.
Re: ¿Cómo hacer que un script sea independiente de la configuración de idioma?Ian, gracias por el saludo! Pero creo que la pregunta de Robbb es más sobre cómo hacer referencia a una columna generada en una tabla de datos cuyo nombre está localizado.
Robbb, este guión:
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];
funciona para mí si estoy usando JMP en inglés o alemán. En ambos casos imprime 58.125 al log. Funciona porque la columna "Mittelwert (altura)" se crea con un nombre de alias de "Media (altura)". Puede ver esto si copia la secuencia de comandos de la tabla y la pega en una nueva ventana de secuencia de comandos:
New Column( ["de" => "Mittelwert(height)", "en" => "Mean(height)"],
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 1 ),<BR />// etc.
Al buscar la columna por nombre, JMP examina tanto el nombre de la configuración regional actual como el alias en inglés, en busca de una coincidencia.
¿Puedes darnos más detalles sobre lo que te está fallando?
Re: ¿Cómo hacer que un script sea independiente de la configuración de idioma?En cuanto a las "buenas prácticas", sin duda echaría un vistazo a el documento de descubrimiento de @hecht_jmp .