Paquete XLSX en R

El proposito del paquete de “XLSX” para R va mas alla de un simple paquete de lectura de archivos Excel, para eso ya se encuentran disponibles varios paquetes. XLSX es un paquete creado especificamente para ser usado con archivos Excel 2007 desde R, sus funciones van mas alla de la simple visualizacion de arhivos de Excel 2007, ya que tambien permite, la manipulacion e incluso creacion de archivos xlsx.

Es importante hacer notar que el paquete en cuestion utiliza la libreria Java del Proyecto Apache POI el cual es un proyecto de la Apache Software Foundation. Es importante esto ya que esta fundacion se encarga de la creacion y administracion de APIs que operen con el lenguaje de programacion Java para documentos de Microsoft.

API (Application Programing Interface)

Para entender mejor la utilidad del paquete XLSX, y ya que su uso es muy comun hoy en dia, es necesario entender que es una API. A grandes rasgos y de manera simple una Application Programing Interface o API es una interfaz que funciona como una conexion entre un programa y otro programa, en este caso el paquete XSLX funciona como la conexion entre un archivo de Excel xlsx y R.

A manera de ejemplo, una API es como un mesero, cuando vamos a comer, tu le das la orden al mesero, el mesero entrega esa orden en la cocina y la cocina te da la respuesta (tu comida) de regreso con el mesero. De esta manera tu le das la orden a R por medio del paquete y el paquete a traves de Excel te da una respuesta. Para mayor informacion respecto a que es una API puedes dar click aquí.

Instalación

(En ambiente linux)

Para la instalación de paquetes de R en entornos tipo GNU/Linux, se abre una sesión desde terminal y se ejecutan los comandos con cuenta de superusuario (root), para instalar el paquete XLSX en R, se necesita tener previamente instalada java y los paquetes para R: rJava y xlsxjars.

Iniciar R con privilegios de superusuario

sudo R

Instalar rJava

install.packages("rJava")

Configurar Java en R

sudo R CMD javareconf
Configurar java en R

Configurar java en R

Instalar paquete XLSX en R

install.packages("xlsx")
Instalar paquete XLSX desde la linea de comandos

Instalar paquete XLSX desde la linea de comandos

Tambien se necesitara instalar el paquete xlsxreader para poder leer ficheros

install.packages("xlsxreader")

Utilización

Una vez descargado e instalado el paquete (¡¡esto es sólo necesario hacerlo una vez!!), para utilizar las funciones que contiene debemos cargarlo en memoria mediante:

library("xlsx")

o, de manera equivalente, mediante:

require("xlsx")

La única diferencia entre estas dos funciones es que require() ha sido diseñado más específicamente para su uso dentro de funciones:

require(“paquete”) devuelve TRUE o FALSE según el paquete esté o no instalado en el ordenador del usuario. Además, si existe lo carga en memoria, y si no existe lanza un “warning” advirtiendo de ello. De esta forma el programador de la función puede utilizar require() para comprobar si el usuario dispone o no de los paquetes necesarios para ejecutar el resto de comandos incluídos en la función, sin que esta se interrumpa. El uso típico de require es, pues, de la forma:

miFunction <- function(argumentos){
  if (!require('paqueteNecesario'))
    stop("Debe instalar el paquete 'paqueteNecesario' para continuar")
  código-de-la-función
  }

library(“paquete”), por el contrario, si detecta que el paquete solicitado no existe, lanza un error y detiene el proceso en marcha.

Con el fin de evitar posibles mensajes de error se sugiere utilizar los siguientes comandos para cargar xlsx.

#Cargar paquete xlsx
library("rJava")
library("xlsxjars")
library("xlsx")
Utilizar paquete XLSX y ejemplo de lectura de un archivo

Utilizar paquete XLSX y ejemplo de lectura de un archivo

Leer una hoja de un libro de Excel.

Para poder utilizar la información de una hoja de cálculo, se requiere tener bien estructurada la tabla de datos y que xlsx la pueda leer correctamente, para ello utilizamos la siguiente estructura de comandos que nos permiten importar la información y utilizarla como si se tratara de un data set.

Nombre que se dará a la tabla <- read.xlsx(“nombre y extensión del archivo”, sheeName = Nombre de la hoja del libro de excel, rowIndex= Rango de filas, colIndex= Rango de Columnas)

Ejemplo:

#Abrir Hoja de Excel y leer área de base de datos
puntajes <- read.xlsx("puntaje.xlsx", #Nombre de archivo
                         sheetName = "Hoja1", #Nombre de la hoja
                         header=TRUE) #La primer fila contiene los encabezados

Al ejecutar este comando podemos ya leer la información de la tabla en R e interactuar con los datos en todas las formas que R nos permite.

(puntajes)
Lectura de archivo XLSX

Lectura de archivo XLSX

Se pueden añadir comandos adicionales para definir el área a importar de la hoja de cálculo. En donde los argumentos de los comandos, pueden ser los siguientes:

File            Archivo a leerse 
sheetName       Nombre de la hoja en el archivo 
sheetIndex      Número de la hoja en el archivo
rowIndex        Vector numérico que indica las filas que desea extraer. Si NULL, todas las filas encontradas se extraerán, a menos que se especifique startRow o endRow
colIndex        Vector numérico que indica las columnas que desea extraer. Si NULL, se extraerán todas las columnas encontradas
as.data.frame   Valor lógico que indica si el resultado debe ser coaccionado en un archivo data.frame. Si FALSE, el resultado es una lista con un elemento para cada columna.
Header          Valor lógico que indica si la primera fila correspondiente al primer elemento del vector rowIndex contiene los nombres de las variables.
ColClasses      Para read.xlsx un vector de caracteres que representa la clase de cada columna. Si el vector de caracteres es nombrado, los valores no especificados se toman como NA.
KeepFormulas    Valor lógico que indica si las fórmulas de Excel deben mostrarse como texto en R y no evaluadas antes de introducirlas.
Encoding        Codificación para las cadenas de entrada.
StartRow        Número que especifica el índice de la fila inicial. Para read.xlsx este argumento sólo está activo si rowIndex es NULL.
EndRow          Número que especifica el índice de la última fila a importar. Si es NULL, lea todas las filas de la hoja. Para read.xlsx este argumento sólo está activo si rowIndex es NULL.

Editar archivos en Excel

Al igual que para extraer la información tenemos que tomarla desde Microsoft Excel, al compartirla se vuelve importarnte el poder hacerlo en este formato de archivo. Para ello xlsx tiene la función de exportar información con el siguiente comando.

write.xlsx(x, file, sheetName="Sheet1",
col.names=TRUE, row.names=TRUE, append=FALSE)
write.xlsx2(x, file, sheetName="Sheet1",
col.names=TRUE, row.names=TRUE, append=FALSE)

En donde los argumentos dados en los comandos, son los siguientes:

X (Marco de datos que se escribirá en el libro) File (Ruta al archivo de salida) SheetName (Cadena de caracteres a utilizar para el nombre de la hoja.) Col.names, row.names (Valor lógico que especifica si los nombres de columnas / nombres de filas de x deben escribirse en el archivo) Append (Valor lógico que indica si se debe añadir x a un archivo existente)

Comandos Útiles

Algunos comandos utiles para la paqueteria XLSX son los siguientes:

CellRange       Cadena que especifica el rango de celdas. 
ColIndex        Vector numérico que especifica las columnas que desea utilizar en el tamaño automático.
ColSplit        Valor numérico para la columna a dividir.
ColWidth        Valor numérico para especificar el ancho de la columna. Las unidades están en 1 / 256ths de un ancho de carácter.
Denominador     Valor numérico que representa el denomiador de la relación de zoom.
EndColumn       Valor numérico para la columna final.
EndRow          Valor numérico para la fila final.
Ind             Valor numérico que indica la región fusionada que desea eliminar.
Numerator       Valor numérico que representa el numerador de la relación de zoom.
Position        Caractér. Los valores válidos son "PANE_LOWER_LEFT", "PANE_LOWER_RIGHT", "PANE_UPPER_LEFT", "PANE_UPPER_RIGHT".
RowSplit        Valor numérico para la fila para dividir.
Sheet           Objeto de hoja de cálculo.
SheetIndex      Valor numérico para el índice de hoja de cálculo. 
StartColumn     Valor numérico para la columna de inicio. 
StartRow        Valor numérico para la fila de inicio.
XSplitPos       Valor numérico para la posición horizontal de split en 1/20 de un punto. 
YSplitPos       Valor numérico para la posición vertical de split en 1/20 de un punto. 
Wb              Objeto de libro.