viernes, 8 de mayo de 2015

Excel y la lectura de ficheros ods

Hagamos un repaso de un problema que he tenido. Desde el año 2007 he cambiado todo el software que utilizo a software libre, tanto en mis ordenadores personales como en los de trabajo. Debido a ese cambio, desde el año 2007 no uso MSOffice —y en estos momentos ningún software comercial—.
Ese proceder lo he aplicado a la docencia, donde si bien los ordenadores utilizan Windows como SO, el software que propongo para enseñar es también GPL —Calc de LibreOffice y R como paquete estadístico—.
A pesar de ofrecer estas opciones, un número bastante alto de alumnos prefieren usar Excel, que también está disponible en los ordenadores.
Por razones que no vamos a explicar ahora, el sistema que utilizo para introducir los datos en R desde una hoja de cálculo es la transformación de la parte necesaria en un fichero de texto plano tabulado. De hecho, llevo décadas haciendo así la estadística, ya que un fichero de texto plano tabulado puede ser leído por todos los paquetes estadísticos que conozco.
Si nos fijamos en Calc, la única función que nos permite Calc para grabar datos en un fichero de texto es csv.


Como su propio nombre indica, las columnas de datos se separan mediante una coma (csv = "comma-separated value"), lo que para los que no somos anglosajores es un problema, ya que nuestros números separan los decimales por comas. Editando los filtros, podemos generar en Calc un csv con separador tabulador (/t)


Y este es el formato que uso para cualquier tipo de programa estadístico, y en concreto en R se lee directamente mediante la función read.delim2('fichero'). Sin embargo, el otro día, ya que tantas personas estaban trabajando con Excel intenté la transformación a texto tabulado con ese programa. En Excel hay más posibilidades, pero son directas sin selección de filtros; podemos elegir directamente la de fichero de texto por tabuladores


El resultado, sin embargo, ha sido un fichero de tamaño muy alto —4,1MB frente a los 4,9kb que resulta su transformación en Calc— y, además, vacío


Al introducir unos datos a mano


y transformarlos de la misma manera sí se guardan bien y R los lee correctamente, tanto con Excel 2007 como 2010


Ya que el error se había dado en Excel 2010, intenté lo mismo en 2007 (en este caso bajo wine-Play on Linux), siendo ambas versiones legales. El resultado fue también grande (240kb) y captando muchas más columnas que las que realmente existían


En resumen, debido a que los errores aparecen al transformar ficheros cuyo origen es un "open document spreadsheet" ods, el problema probalemente esté en que la lectura del formato ods por parte de excel no es correcta, y aun peor en la versión 2010 que en la 2007 —no he podido probar la 2013, ya que no dispongo de ella—.


No hay comentarios:

Publicar un comentario