Jan 28 / Sebastián Garrido de Sierra

?R | #2 - Locale, oh-oh

Hola colega.

Bienvenida, bienvenido al segundo número de ?R.

Comienzo con una pregunta.

¿Qué tienen en común los cuatro "problemas" que describo en el siguiente gif 👇?
Todos están determinados por el locale (de tu equipo, de R y/o de RStudio) 😮.

A esto dedicaremos el newsletter de esta y la siguiente semanas.

💡 Tips

1) ¿QUÉ ES EL LOCALE? 🤌

El locale es el conjunto de reglas que permiten que las computadoras y programas que utilizamos se ajusten a las convenciones de cierto idioma, país y cultura, y, con ello, tropicalizar nuestra experiencia al usarlos.

En la práctica, el locale define una larga lista de valores que nuestros equipos y (algunos) programas utilizan cuando tienen que:
  • Determinar qué formato usar para representar fechas (p. ej., January vs. enero, YYYY-MM-DD vs. MM-DD-YYYY)
  • Representar números (p. ej., 1,234.56 vs. 1.234,56)
  • Clasificar caracteres (p. ej., letras dígitos, espacios) y lidiar con caracteres especiales (p. ej., acentos, virgulilla)
  • Ordenar alfabéticamente los valores de una variables tipo cadena de texto
  • Trabajar con valores monetarios (p. ej., tipo de moneda, símbolo)

2) ¿QUÉ LOCALES EXISTEN EN TU COMPUTADORA? 💻

La respuesta depende, entre otras cosas, del sistema operativo de tu equipo (p. ej., Mac/Linux o Windows) y la versión del mismo.

Por suerte, puedes responder esta pregunta sin salir de R.

A continuación encontrarás dos opciones de código: la primera es útil si el sistema operativo de tu computadora es Mac o Linux, y la segunda si corre en Windows.
Si copias y ejecutas el código de arriba en R, deberías ver algo como esto en tu consola:
En mi caso, esta lista contiene los poco más de 200 locales disponibles en mi equipo 🤯, y que representan los que puedo usar en una sesión de R. 

Por favor nota que el nombre de casi todos está compuesto, como mínimo, por dos componentes separados por un guión bajo ("
_").

Mientras que el primero define el idioma que se debe usar (p. ej., "en"
 para inglés), el segundo establece la región o país (p. ej., "GB" para Gran Bretaña). Si eligiera el locale "en_GB" en mi computadora, entonces trabajaría en inglés con las convenciones de Gran Bretaña (p. ej., colour en lugar de color).

La imagen de arriba también muestra que los nombres de algunos locales tienen un tercer componente, separado por un punto (".") del resto (p. ej., "en_GB.UTF-8"). 

Este último elemento le indica a nuestra computadora qué codificación de caracteres utilizar (regresaré a este tema la próxima semana).

Nota bene

OJO 1: La lista de locales de mi computadora sólo incluye cuatro opciones que usan el idioma español ("es_ES", "es_ES.ISO8859-1""es_ES.ISO8859-15" y "es_ES.UTF-8") y todas corresponden al español de España. En consecuencia, aunque lo quisiera, no podré usar un locale en R para español de México (e.g., "es_MX").

OJO 2
: Si el sistema operativo de tu equipo es Windows, aunque el segundo y tercer componentes también estarán separados por "_" y ".", la sintaxis de los nombres de los locales puede ser diferente.



3) ¿QUÉ LOCALE USA R EN TU COMPUTADORA?

Si nuestras computadoras tienen decenas y decenas de locales disponibles, ¿cuál usa R?

Por suerte, el código para averiguarlo es mucho más sencillo que en el caso anterior. 

Basta con que ejecutes la siguiente función en
R para averiguarlo:
Al hacerlo, deberías ver algo como esto en la consola:
Notoriamente, R me está avisando que usa el locale llamado en_US.UTF-8.

¿Pero por qué repite tantas veces ese valor?

Con ello, R me indica que está usando el mismo locale para determinar los valores de todas las categorías que mencioné antes: formato de fechas, representación de números, etc.

Éste es el default, pero no tiene que ser así, pues podemos configurar cada una de estas categorías con diferentes locales.

Y eso nos lleva a los recursos de la semana 👇...

¿Te gustaría recibir nuestro newsletter cada semana en tu correo?

Compártenos tu info y te lo mandamos 🤓.

Nos importa tu privacidad.
Averigua
aquí qué hacemos para protegerla.
Muchas gracias 🙂

En los próximos minutos recibirás un correo de Sebastián de Data Crunchers

Si no lo encuentras en la bandeja de entrada, por favor revisa las carpetas de Spam y Social (o equivalentes).

⚡️ Recursos

1) CAMBIA EL LOCALE EN R 🛠️

La función sys.setlocale() te permite modificar el locale que R usa por default para definir los valores de una o más categorías durante una sesión de trabajo.

Los siguientes chunks de código ilustran cómo utilizar esta función para cambiar todas las categorías del locale a español de España en diferentes sistemas operativos:
Con este sencillo ajuste lograríamos "corregir" los primeros dos "problemas" que ilustré en el gif al comienzo: mostrar las fechas en español en la gráfica y ordenar correctamente las palabras. 

Si sólo deseas cambiar el
locale para una categoría (p. ej., el formato de las fechas), entonces debes remplazar el valor "LC_ALL" por el de la dimensión correspondiente (siguiendo con el ejemplo"LC_TIME").

El ​código​ de abajo incluye varios ejemplos de cómo hacerlo:

2) NÚMEROS 🔢 Y DINERO 💵

Si alguna vez necesitas conocer los detalles de las convenciones que rigen a los valores numéricos y monetarios que R usará una vez que elegiste cierto locale, puedes ejecutar la función Sys.localeconv() para averiguarlo.

La siguiente imagen muestra los detalles que obtuve después de haber cambiado todas las categorías del
locale a  "ja_JP" (japonés de Japón):

3) EL ORIGEN DE LOS LOCALES 🕰️

Todo inició en la década de los ochenta, a partir de que Microsoft y otras compañías comenzaron a vender sus productos fuera de mercados angloparlantes. 

Si te interesa aprender un poco más sobre el origen de estas convenciones, y los problemas que las motivaron, te recomiendo echarle un ojo a ​este​ y ​este​ posts.


Paro por hoy.

En el próximo número regresaré a los locales para platicar sobre la codificación de caracteres o encoding.

Entonces explicaré cómo lograr que:
  • R interpreté correctamente los caracteres especiales al importar una base de datos; y/o,
  • RStudio interpreté correctamente este tipo de caracteres al abrir un script de R.
Saludos y nos leemos pronto,

~ Sebastián

Empty space, drag to resize
Postdata

Para quienes nacieron después de 1989, mi chascarrillo al nombrar este número del newsletter como
Locale, oh-oh hace referencia a esta canción de los Gipsy Kings.