¿Qué es RStudio?
RStudio es un entorno de desarrollo integrado (IDE) para R (lenguaje de programación) . Incluye una consola, editor de sintaxis que apoya la ejecución de código, así como herramientas para el trazado, la depuración y la gestión del espacio de trabajo. RStudio está disponible para Windows, Mac y Linux o para navegadores conectados a RStudio Server o RStudio Server Pro (Debian / Ubuntu, RedHat / CentOS, y SUSE Linux).
R provee un acceso relativamente sencillo a una amplia variedad de técnicas estadísticas y gráficas, al igual que un lenguaje de programación completo que se puede añadir nuevas técnicas mediante la definición de funciones. Actualmente R es uno de los lenguajes más utilizados en investigación estadística entre los atractivos de R se pueden mencionar:
• La capacidad de manipular y modificar datos y funciones
• Tiene alta calidad, reproducción y visualización gráficos y datos
• Es dinámica con gran crecimiento de paquetes
• Y lo mejor de todo es que es gratuita comprándola con otros paquetes como S-plus
Es un paquete de R para leer, escribir y formatear archivos de Excel. Es una solución basada en java y está disponible para Windows, Mac y Linux. Funciona tanto para los formatos de archivo Excel (formatos de archivo xls y xlsx) y trabaja para las versiones de Excel 97, 2000, XP, 2003 y 2007. El importar y exportar archivos de Excel a RStudio con el paquete xlsx, proporciona funcionalidades para realizar análisis estadísticos, diagramas que sólo con las facilidades de Rstudio se pueden obtener. La implementación de RStudio para cubrir las necesidades de análisis y toma de decisiones da como resultado una mejora en la forma de obtener información verificable, confiable y comparable; así mismo es importante mencionar que en el repositorio de paquetes R (CRAN) podemos encontrar gran cantidad de paquetes para trabajar con hojas de cálculo Excel desde R, siendo uno de ellos es el paquete xlsx. Con este paquete también se puede trabajar con hojas de versiones previas de Excel, así mismo para la instalación del paquete no tenemos más que facilitar su nombre a install. packages desde la consola de R, si la configuración del repositorio es correcta, se descargará el paquete y también sus dependencias; de esta forma quedando instalados y listos para usar. Por otra parte y términos generales, podemos concluir que el paquete xlsx es útil para: Leer y escribir archivos Excel, agregar conjuntos de datos e imágenes (o gráficos) en una hoja de Excel así como formatear la apariencia de la hoja de cálculo de Excel estableciendo formatos de datos, fuentes, colores y bordes.
Importar archivos de Excel desde R
Previo a proceder con el detalle de importar y exportar archivos, es importante considerar como se ingresan datos y lee un archivo en xlsx en R. Para ingresar datos se debe abrir un archivo de Microsoft Excel, por lo que consideraremos el siguiente ejemplo (mismo archivo diferentes pestañas):
library( rgl)
## Warning: package 'rgl' was built under R version 3.3.3
library( rJava)
library( xlsx)
## Loading required package: xlsxjars
library(xlsxjars)
library(readxl)
## Warning: package 'readxl' was built under R version 3.3.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.3.3
Carrera<- read.xlsx("ArchivoAreas.xlsx", sheetIndex = 1,header=TRUE )
read_excel("ArchivoAreas.xlsx", sheet = 1)
## # A tibble: 7 × 4
## Id Name Age Career
## <dbl> <chr> <dbl> <chr>
## 1 1 Luis 23 Administración
## 2 2 Juan 24 Derecho
## 3 3 Yowel 20 Administración
## 4 4 José 21 Informática
## 5 5 Ana 22 Derecho
## 6 6 Luisa 25 Veterinaria
## 7 7 Martína 22 Informática
attach (Carrera)
View(Carrera)
qplot(Age, geom = "histogram")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Por otra parte, es importante que los datos contenidos en la hoja de cálculo cumplan con ciertas características para que su lectura en R Studio sea correcta, algunas características a considerar son las siguientes:
• Evitar celdas sin nombres o espacios en blanco (en caso de no tener el dato es preferible se indique con NA).
• Evitar el uso de nombres que contengan signos (“!”#$%&/) .
• Eliminar cualquier comentario realizado en la hoja de cálculo
Una vez generado, es importante guardarlo en el directorio de trabajo actual del espacio de trabajo R; para verificar el directorio de trabajo, basta con escribir en la consola getwd().
Exportar archivos de Excel
Las funciones R write.xlsx () se pueden utilizar para exportar datos de R a un libro de Excel. El formato simplificado de estas funciones es:
Write.xlsx (x, file, sheetName = “Sheet1”, Col.names = TRUE, row.names = TRUE, append = FALSE)
• X: un marco de datos que se escribirá en el libro
• File: la ruta al archivo de salida
• SheetName: una cadena de caracteres a utilizar para el nombre de la hoja.
• col.names, row.names: un valor lógico que especifica si los nombres de columnas / nombres de filas de x deben escribirse en el archivo
• Append: un valor lógico que indica si se debe añadir x a un archivo existente.
El paquete xlsx, se puede instalar facilmente en Rstudio, a continiacion te mostraremos tres opciones por medio de las cuales podras descargarlo a tu equipo de computo.
Importar de ecxel a R
Los paquetes son las extensiones que R necesita para poder hacer ciertas funciones, se debera instalar el paquete xlsx, usando el programa RStudio, para ello se ejecuta alguna de las siguientes instrucciones:
Paso 1.- Ir a la barra de menu, da click en Tools (Herramientas)-> y seleciona Install packages (Instalar paquetes).
Install Packages
Paso 1.- Ir a la pestana Packages, ubicada en la ventana del lado derecho inferior en RStudio y presionar el boton Install.
Install R Packages
Paso 2.- Despues de elegir la opcion deseada, aparecera una pantalla tipo buscador y se escribe el nombre del paquete xlsx, es importante verificar que la casilla de install dependencies este activada, y se presiona el boton Install.
Install Xlsx
El paquete ha sido instalado.
Escribir directamente en la consola o en tu script.
Ejecuta cada una de las siguientes lineas para la instalacion:
install.packages("Xlsx")
library("xlsx")
Se ejecuta con Ctrl + Enter.
Install.packages
Una vez que R terminado de instalar el paquete Xlsx, es necesario ponerlo a funcionar para que nos permita utilizar sus beneficios.
System Library
createCell(row, colIndex=1:5)
getCells(row, colIndex=NULL, simplify=TRUE)
setCellValue(cell, value, richTextString=FALSE, showNA=TRUE)
getCellValue(cell, keepFormulas=FALSE, encoding="unknown")
En la siguiente tabla, se muestran las funciones con descripción:
Elementos | Concepto |
---|---|
row | Una lista de objetos de fila |
colIndex | Un vector numérico que especifica el índice de columnas |
simplify | Un valorlógico. Si es VERDAD, el resultado no se mostrará en la lista |
value | Una variable R de longitud uno |
richTextString | Un valor lógico que indica si el valor debe insertarse en la celda de Excel como texto enriquecido |
showNA | Valor lógico. Si es VERDADERO la celda contendrá el valor “#N/A”, Si es Falso, se saltaran. El valor predeterminado se eligirá para seguir siendo compatible con las versiones anteriores de la función |
keepFormulas | Un valor lógico. Si es VERDADERA las formulas se devuelven como caracteres en lugar de ser evaluadas explícitamente |
encoding | Un valor de carácter para establecer la codificación, por ejemplo “UTF-8” |
cell | Un objeto Cell |
require(xlsx)
require(rJava)
require(xlsxjars)
file <- system.file("tests", "test_import.xlsx", package = "xlsx")
wb <-loadWorkbook(file)
sheet <- getSheets(wb)[["deletedFields"]]
ranges <- getRanges(wb)
# create a new named range
firstCell <- sheet$getRow(14L)$getCell(4L)
lastCell <- sheet$getRow(20L)$getCell(7L)
rangeName <- "Test2"
# same issue on MacOS
#createRange(rangeName, firstCell, lastCell)
Eliminar Campos
createCell(row, colIndex=1:5)
getCells(row, colIndex=NULL, simplify=TRUE)
setCellValue(cell, value, richTextString=FALSE, showNA=TRUE)
getCellValue(cell, keepFormulas=FALSE, encoding="unknown")
En la siguiente tabla, se muestran las funciones con descripción:
Elementos | Conceptos |
---|---|
sheet | Un objeto de hoja de cálculo devuelto por createSheet o subconjunto de getSheets |
rowIndex | Un vector num??rico que especifica el índice de filas a crear. Para getRows, un NULL |
rows | Valor devolverá todas las filas no vacías |
inPoints | Una lista de objetos de fila |
multiplier | Un valor numérico para especificar el múltiplo de la altura de fila predeterminada en puntos. Si se establece este valor, tiene prioridad sobre el argumento inPoints |
require(xlsx)
require(rJava)
require(xlsxjars)
file <- system.file("tests", "test_import.xlsx", package = "xlsx")
wb <- loadWorkbook(file)
sheets <- getSheets(wb)
sheet <- sheets[[2]]
rows <- getRows(sheet) # get all the rows
# see all the available java methods that you can call
#.jmethods(rows[[1]])
# for example
rows[[1]]$getRowNum() # zero based index in Java
## [1] 0
removeRow(sheet, rows) # remove them all
# create some row
rows <- createRow(sheet, rowIndex=1:5)
setRowHeight( rows, multiplier=3) # 3 times bigger rows than the default
createSheet(wb, sheetName="Sheet1")
removeSheet(wb, sheetName="Sheet1")
getSheets(wb)
En la siguiente tabla, se muestran las funciones con descripción:
Elementos | Conceptos |
---|---|
wb | Un objeto de libro como devuelto por createWorksheet o loadWorksheet |
sheetName | Un carácter que especifica el nombre de la hoja de cálculo que se va a crear o quitar |
require(xlsx)
require(rJava)
require(xlsxjars)
file <- system.file("tests", "test_import.xlsx", package = "xlsx")
wb <- loadWorkbook(file)
sheets <- getSheets(wb)
sheet <- sheets[[1]] # extrae los datos de la hoja 1
sheet$getLastRowNum() # Muestra el total re registros que contiene la hoja 1
## [1] 50
Conteo registros
En esta seccion, se mostrara paso a paso como cambiar la apariencia de la hoja de calculo de Excel en R y crear un libro de Excel con formato con tablas y graficos.
Se deben seguir los siguientes pasos:
Se utiliza la funcion createWorkbook (). Funciona para los formatos de archivo .xls y .xlsx:
Posibles valores para la variable “type” son: “xls” y “xlsx” (ambos formatos de libro de Excel, dependiendo la version)
wb<-createWorkbook(type=“xlsx”)
Vamos a dar formato a las celdas y modificar:
La funcion R CellStyle () se utiliza para crear estilos de celda. Un formato simplificado de la funcion es:
CellStyle(wb, dataFormat=NULL, alignment=NULL, border=NULL, fill=NULL, font=NULL)
Donde:
Aqui un ejemplo:
Definir formato de celda
++++++++++++++++++++
Formato de titulos y subtitulos
TITLE_STYLE <- CellStyle(wb)+ Font(wb, heightInPoints=16, color=“blue”, isBold=TRUE, underline=1) SUB_TITLE_STYLE <- CellStyle(wb) + Font(wb, heightInPoints=14, isItalic=TRUE, isBold=FALSE)
Formato para los nombres de fila / columna de la tabla de datos
TABLE_ROWNAMES_STYLE <- CellStyle(wb) + Font(wb, isBold=TRUE) TABLE_COLNAMES_STYLE <- CellStyle(wb) + Font(wb, isBold=TRUE) + Alignment(wrapText=TRUE, horizontal=“ALIGN_CENTER”) + Border(color=“black”, position=c(“TOP”, “BOTTOM”), pen=c(“BORDER_THIN”, “BORDER_THICK”))
Donde:
Wb: un objeto de libro devuelto por createWorkbook o loadWorkbook.
Crear una nueva hoja en el libro
Para agregar datos, el primer paso es crear una hoja en el libro para contener los datos. Esto se hace usando la funcion createSheet ():
Sheet <- createSheet (wb, sheetName = “US State Facts”)
Agregar un titulo a una hoja de calculo
Para agregar un titulo, el procedimiento es:
Para simplificar el codigo R, esta una funcion auxiliar para agregar un titulo:
Xlsx.addTitle <-function (sheet, rowIndex, title, titleStyle) {rows <-createRow (sheet, rowIndex = rowIndex) SheetTitle <-createCell (rows, colIndex = 1) SetCellValue (sheetTitle [[1,1]], title) SetCellStyle (sheetTitle [[1,1]], titleStyle)
Importante: Copiar y pegar el codigo de la funcion xlsx.add Title en la consola de R antes de continuar.
xlsx.addTitle(sheet, rowIndex=1, title=“US State Facts”, titleStyle = TITLE_STYLE)
xlsx.addTitle(sheet, rowIndex=2, title=“Data sets related to the 50 states of USA.”, titleStyle = SUB_TITLE_STYLE)
La funcian addDataframe () se utiliza para agregar la tabla en la nueva hoja.
La tabla de datos state.x77 se utiliza en el siguiente ejemplo:
head(state.x77)
Data example
addDataFrame(state.x77, sheet, startRow=3, startColumn=1, colnamesStyle = TABLE_COLNAMES_STYLE, rownamesStyle = TABLE_ROWNAMES_STYLE)
setColumnWidth(sheet, colIndex=c(1:ncol(state.x77)), colWidth=11)
Crear una grafica png
ng(“boxplot.png”, height=800, width=800, res=250, pointsize=8) boxplot(count ~ spray, data = InsectSprays, col = “blue”) dev.off()
Sheet <-createSheet (wb, sheetName = “boxplot”)
xlsx.addTitle(sheet, rowIndex=1, title=“Box plot using InsectSprays data”, titleStyle = TITLE_STYLE)
addPicture(“boxplot.png”, sheet, scale = 1, startRow = 4, startColumn = 1)
Res <-file.remove (“boxplot.png”)
SaveWorkbook (wb, “r-xlsx-report-example.xlsx”)
Ir al directorio de trabajo actual y abrir el libro recie??n creado:
Nice Excel
library(xlsx)
# Crear un nuevo libro de excel
#++++++++++++++++++++++++++++++++++++
# los posibles valores son: "xls" y "xlsx"
wb<-createWorkbook(type="xlsx")
# Definir formatos de celda
#++++++++++++++++++++++++++++++++++++
# Titulo y subtitulo
TITLE_STYLE <- CellStyle(wb)+ Font(wb, heightInPoints=16,
color="blue", isBold=TRUE, underline=1)
SUB_TITLE_STYLE <- CellStyle(wb) +
Font(wb, heightInPoints=14,
isItalic=TRUE, isBold=FALSE)
# Formatos para la table de datos, nombre de columnas y filas
TABLE_ROWNAMES_STYLE <- CellStyle(wb) + Font(wb, isBold=TRUE)
TABLE_COLNAMES_STYLE <- CellStyle(wb) + Font(wb, isBold=TRUE) +
Alignment(wrapText=TRUE, horizontal="ALIGN_CENTER") +
Border(color="black", position=c("TOP", "BOTTOM"),
pen=c("BORDER_THIN", "BORDER_THICK"))
# crear una nueva hoja en el libro
#++++++++++++++++++++++++++++++++++++
sheet <- createSheet(wb, sheetName = "US State Facts")
#++++++++++++++++++++++++
# Funcion de ayuda para crear ti??tulos
#++++++++++++++++++++++++
# - sheet : La hoja que contiene el titulo
# - rowIndex : valor numerico que indica la columna que
#contiene el titulo
# - title : el texto que se usa como titulo
# - titleStyle : format para el titulo
xlsx.addTitle<-function(sheet, rowIndex, title, titleStyle){
rows <-createRow(sheet,rowIndex=rowIndex)
sheetTitle <-createCell(rows, colIndex=1)
setCellValue(sheetTitle[[1,1]], title)
setCellStyle(sheetTitle[[1,1]], titleStyle)
}
# Agregar titulo y subtitulo en una hoja de trabajo
#++++++++++++++++++++++++++++++++++++
# Agregar titulo
xlsx.addTitle(sheet, rowIndex=1, title="US State Facts",
titleStyle = TITLE_STYLE)
# Agregar subtitulo
xlsx.addTitle(sheet, rowIndex=2,
title="Data sets related to the 50 states of USA.",
titleStyle = SUB_TITLE_STYLE)
# Agregar una tabla en la hoja de trabajo
#++++++++++++++++++++++++++++++++++++
addDataFrame(state.x77, sheet, startRow=3, startColumn=1,
colnamesStyle = TABLE_COLNAMES_STYLE,
rownamesStyle = TABLE_ROWNAMES_STYLE)
# Cambia rancho de la columna
setColumnWidth(sheet, colIndex=c(1:ncol(state.x77)), colWidth=11)
# Agregar una gra??fica en la hoja de trabajo
#++++++++++++++++++++++++++++++++++++
# crear una grafica png
png("boxplot.png", height=800, width=800, res=250, pointsize=8)
boxplot(count ~ spray, data = InsectSprays,
col = "blue")
dev.off()
## png
## 2
# Crear una hoja que contenga la grafica
sheet <-createSheet(wb, sheetName = "boxplot")
# Agregar titulo
xlsx.addTitle(sheet, rowIndex=1, title="Box plot using InsectSprays data",
titleStyle = TITLE_STYLE)
# Agregar la grafica creada anteriormente
addPicture("boxplot.png", sheet, scale = 1, startRow = 4,
startColumn = 1)
# Quitar la gra??fica del disco
res<-file.remove("boxplot.png")
# Guardar la hoja en un archivo...
#++++++++++++++++++++++++++++++++++++
saveWorkbook(wb, "r-xlsx-formato-ejemplo.xlsx")
En esta sección de ejercicios se obtendran datos de algunos archivos de extension XLSX. A traves de comandos se leyeron dichos archivos para utilizar y manipular los datos para poder generar graficas, histogramas etc.
A continuación se presenta la tabla obtenida del archivo XLSX con sus columnas.
En este primer ejemplo se lee un archivo que contiene 3 columnas (DAY, Temper, Etiqueta) con el cual se genera un histograma.
library( rgl)
library( rJava)
library( xlsx)
library(xlsxjars)
library(readxl)
library(ggplot2)
VARR <- read.xlsx("DistributionEtiqueta.xlsx", sheetIndex = 1,header=TRUE )
read_excel("DistributionEtiqueta.xlsx", sheet = 1)
## # A tibble: 20 × 3
## Day Temper Etiqueta
## <dbl> <dbl> <chr>
## 1 1 24 Y
## 2 2 35 X
## 3 3 17 Z
## 4 4 21 Y
## 5 5 24 Y
## 6 6 37 X
## 7 7 26 Y
## 8 8 46 Z
## 9 9 58 X
## 10 10 31 X
## 11 11 32 X
## 12 12 13 Z
## 13 13 12 Z
## 14 14 38 X
## 15 15 41 X
## 16 16 43 X
## 17 17 44 X
## 18 18 27 Y
## 19 19 53 X
## 20 20 27 Y
attach (VARR)
qplot(Temper, geom = "histogram", main = "HISTOGRAMA" )
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
En este segundo ejemplo se utiliza el mismo un archivo que contiene 3 columnas (DAY, Temper, Etiqueta), pero ahora se realiza una grafica de puntos.
qplot(Temper, geom = "dotplot" )
## `stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.
En este ejemplo se utiliza el mismo un archivo que contiene 3 columnas (DAY, Temper, Etiqueta), Se genera una grafica de puntos en donde se puede ver la distribución de la temperatura en cada uno de los d??as.
#grafica Bidimensional
plot(Temper)
title(main="Grafica Bidimensional (Temperatura)",col.main="Blue",sub="Temperatura por dia", col.sub="red",cex.sub=0.7)
En este ejemplo se utiliza el mismo archivo y se genera una grafica de barras, en donde se utiliza la clasificación de la columna etiqueta. El color y etiqueta asignado es en funcion d ela clasificación (X, Y y Z) que se le da en el XLSX.
En este ejemplo se colocan las variables dentro del dataframe y se hacen conocidas para ser utilizadas mediante el comando de graficación ggplot.
df=data.frame(Day,Temper, Etiqueta)
ggplot(data=df, aes(x=Day, y=Temper, fill= Etiqueta)) + geom_bar(stat="identity") + scale_fill_manual(values=c("#FF0033", "#3300FF", "#00CC00"))
En este ejemplo se utiliza un archivo que tiene 3 columnas (X, Y y Z) y se grafican los 20 puntos en coordenadas de acuerdo a la posicion.
library( rgl)
library( rJava)
library( xlsx)
library(xlsxjars)
library(readxl)
TEMPR <- read.xlsx("temperatureTest2.xlsx", sheetIndex = 1,header=TRUE )
read_excel("temperatureTest2.xlsx", sheet = 1)
## # A tibble: 20 × 4
## Particula X Y Z
## <dbl> <dbl> <dbl> <dbl>
## 1 1 24 20 15
## 2 2 35 12 34
## 3 3 17 4 2
## 4 4 21 5 19
## 5 5 24 18 28
## 6 6 37 7 50
## 7 7 26 11 21
## 8 8 46 28 25
## 9 9 58 30 11
## 10 10 31 25 34
## 11 11 32 2 19
## 12 12 13 6 23
## 13 13 12 12 47
## 14 14 38 25 33
## 15 15 41 4 28
## 16 16 43 19 5
## 17 17 44 1 8
## 18 18 27 4 53
## 19 19 53 9 38
## 20 20 27 21 7
attach (TEMPR)
#Grafica 3D
plot3d( X, Y, Z, col = rainbow(length(TEMPR)), type = "s", radius = 1.5, main="Grafica 3D", col.sub="red")
El GIF generado depués de generarlo con el comando play3d y movie3d es el siguiente:
R es en sí un lenguaje de programación creado en un entorno pensado para el análisis estadístico y gráfico de datos, siendo un software libre que se distribuye bajo licencia GNU GPL.
Como hemos visto R como entorno de programación se desarrolla mediante librerías (también llamadas en R como paquetes) que lo que hacen es completar el lenguaje con nuevos desarrollos previstos para distintas áreas del análisis estadístico y gráfico de los datos.
El paquete xlsx es de gran utilidad debido a que nos permite la manipulación directa de hojas, filas y celdas, así como, el control para establecer colores, fuentes, formatos de datos, añadir bordes, ocultar y/o mostrar hojas, agregar y/o quitar filas, añadir y/o quitar hojas, etc. y guardar archivos de Excel sin la necesidad de usar Excel volviendo a R un programa más eficiente, Por lo que podemos concluir R es mucho más hábil y eficiente en la preparación de datos que Excel, ya que R utiliza un leguaje de script en lugar de una interfaz gráfica de usuario, por lo que es mucho más fácil de automatizar cosas en R que en Excel, esto hace ahorrar tiempo, especialmente cuando tiene que volver a ejecutar el mismo análisis varias veces, Otro beneficio de R es que puede leer prácticamente cualquier tipo de datos (.txt, .csv, .dat, etc) con los que estamos acostumbrados, esto ayuda a volver a trabajar.
Además de que Se ejecuta en muchas plataformas y se puede utilizar R en Windows, Mac, Linux y Unix.