Actualmente, el proceso de recolección de grandes cantidades de datos y su análisis es indispensable para tener una ventaja competitiva dentro de una economía globalizada. Las herramientas para analizar dicha información se vuelven aún más indispensables para tener la interpretación de los mismos de manera precisa, consisa y en el menor tiempo posible; es por esto que los softwares tradicionales no dan abasto ara cubrir estas necesidades.
¿Qué es R?
R es un proyecto de software libre de GNU, lenguaje de programación orientado al cálculo estadístico. Proporciona una amplia variedad de técnicas y recursos para el trabajo con gráficas y análisis.
¿Qué es RStudio?
RStudio es un entorno de desarrollo integrado (IDE) para R. Es software libre con licencia GPLv3 y se puede ejecutar sobre distintas plataformas (Windows, Mac, or Linux) o incluso desde la web usando RStudio Server.
En este manual, aprenderemos a usar funciones del paquete .CSV utilizando RStudio que nos permitirá manejar gran cantidad de información de manera fácil. Además, Aprenderemos el lenguaje del paquete XLSX que también sirve para manupular archivos en excel.
CSV es un potente paquete de R para Windows, Mac y Linux. Funciona en formatos de archivo excel XLS y XLSX. Ademas sirve como una alternativa cuando no se puede usar el paquete “.xlsx”
Temas: . Leer y escribir archivos Excel. . Agregar conjuntos de datos e imágenes (o gráficos) en una hoja de cálculo de Excel.
Así que, empecemos…
En CRAN (repositorio de paquetes R) se pueden encontrar varios paquetes para trabajar con hojas de cálculo Excel desde R. Uno de ellos es el paquete “csv”.La instalacion del mismo puede ser desde la ventana “package” como se muestra en la siguiente imagen:
O bien, ingresando el siguiente comando en tu Scrip o cosola:
install.packages("csv",dependencies=TRUE)
Nota: es importante agregar “dependencies” al momento de instalar el paquete para que se descarguen todos los elementos que se requieren para usar el paquete en su máxima capacidad
Debe considerar que mientras R esté ejecutando una actividad, se observará un botón rojo en la parte superior derecha de la consola, se debe de esperar a que se termine el proceso.
Primero debemos llamar nuestro paquete para poder trabajar con el. Directo del scrip o consola inserte el siguiente comando para usar el paquete CSV:
library(csv)
Genere una tabla desde R con los siguientes pasos:
Edad <- c(23,30,30,35,40)
Estatura <- c(1.64,1.7,1.8,1.55,1.8)
Peso <- c(50,70,85,45,80)
Nacionalidad<-c("Mexicano","Mexicano","Mexicano","Extranjero","Extranjero")
Genero <- c("Mujer","Hombre","Hombre","Mujer","Hombre")
X <- cbind(Edad,Estatura,Peso,Nacionalidad,Genero)
row.names(X) <- c("Ana","Alberto","Anyelo","Fulanita","Sultanito")
datos<-data.frame(X)
write.table(datos,"Estadistica Grupo 1.txt")
write.csv(datos,"Estadistica Grupo 1.csv")
¡¡Eureka!! Tiene el documento en el directorio que esté utilizando
Ahora veamos como importar los datos desde un archivo excel.
read.csv("Estadistica Grupo 1.csv")
## X Edad Estatura Peso Nacionalidad Genero
## 1 Ana 23 1.64 50 Mexicano Mujer
## 2 Alberto 30 1.70 70 Mexicano Hombre
## 3 Anyelo 30 1.80 85 Mexicano Hombre
## 4 Fulanita 35 1.55 45 Extranjero Mujer
## 5 Sultanito 40 1.80 80 Extranjero Hombre
z <- read.csv("Estadistica Grupo 1.csv")
View(z)
¡Listo! Ahora puede empezar a analizar la base de datos con diferentes gráficos, por ejemplo:
XLSX es uno de los potentes paquetes 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).
Dentro de las diversas funciones de XLSX están: + Leer y escribir archivos Excel. + Agregar conjuntos de datos e imágenes (o gráficos) en una hoja de cálculo de Excel. + Formatear la apariencia de la hoja de cálculo de Excel estableciendo formatos de datos, fuentes, colores y bordes.
Como lo vimos anteriormente, se puede descargar el paquete XLSX desde la opción “packages”, o bien, utilizar el siguiente comando:
install.packages("xlsx",dependencies = TRUE)
Además de llamar el paquete a la sesión de trabajo:
library(xlsx)
Si quiere enviar a una hoja de cálculo Excel la información que tenemos almacenada en un data.frame de R (u otra estructura de datos), se ejecuta el comando:
write.xlsx
Considerando los siguientes parámetros.
| Parámetro | Descripción |
|---|---|
| SheetName | Nombre de la hoja del libro en que se introducirán los datos. |
| Append | Por defecto toma el valor FALSE, provocando que la función cree un libro con el nombre indicado por filename eliminándolo si ya existiese. Si es TRUE el libro debe existir y al mismo se añadirá una hoja con los nuevos datos. |
| Col.names y Row.names | Determinan si se escribirán en la hoja los nombres asociados a las columnas y las filas del data.frame. Por defecto ambos parámetros toman el valor TRUE. |
Por ejemplo:
library(xlsx)
lapply(c("Primavera","Verano","Otoño","invierno"),fuction(estaciones))
write.xlsx(x=data.frame(mes=c(1:3),ventas=rnorm(4,mean = 1000,sd=500)),file="Datos Por Estacion.xlsx", sheetname=Estacion,rownames=FALSE, append=TRUE)
No hay que olvidar guardar el archivo trabajado, para ello se utiliza el siguiente comando:
SaveWorkbook (wb, "libro a salvo.xlsx")
Ahora bien, para leer la información almacenada debemos indicar que se quiere traer el libro con el nombre de la hoja que contiene la información. Por ejemplo:
read.xlsx("Datos por Estación.xlsx",sheetname"Otoño")
En caso de que nos interese leer un conjunto concreto de celdillas, no la hoja completa, recurriremos a los parámetros colIndex y rowIndex para especificar qué columnas y qué filas han de recuperarse.
Funciones para manipular celdas
createCell(row, colIndex=1:5)
getCells(row, colIndex=NULL, simplify=TRUE)
setCellValue(cell, value, richTextString=FALSE, showNA=TRUE)
getCellValue(cell, keepFormulas=FALSE, encoding="unknown")
donde:
| Función | Descripción |
|---|---|
| dataFormat | Formato. |
| alignment | Alineación. |
| border | bordes de celda. |
| font | Fuente del texto. |
| row | Contenido de filas. |
| collndex | Especifica el índice de las columnas. |
| value | Varibale de longitud. |
| richTextString | Indica si el contenido debe insertarse como texto enriquecido. |
| showNA | Valor lógico. Si es VERDADERO la celda contendrá el valor “#N/A”, Si es Falso, se saltaran. |
| keepFormulas | Un valor lógico. Si es VERDADERA las formulas se devuelven como caracteres en lugar de ser evaluadas explícitamente. |
Funciones para manipular filas
createCell(row, colIndex=1:5)
getCells(row, colIndex=NULL, simplify=TRUE)
setCellValue(cell, value, richTextString=FALSE, showNA=TRUE)
getCellValue(cell, keepFormulas=FALSE, encoding="unknown")
donde:
| Función | Descripción |
|---|---|
| sheet | Nombre de la hoja de cálculo. |
| rowIndex | Para crear el número de filas especificado. |
| rows | Valor definido para las celdas vacías. |
| multiplier | Sirve para especificar la altura de las filas. |
Funciones para manipular hojas de trabajo
createSheet(wb, sheetName="Sheet1")
removeSheet(wb, sheetName="Sheet1")
getSheets(wb)
donde:
| Función | Descripción |
|---|---|
| sheetName | Nombre de la hoja que se va a modificar. |
| createSheet | Función para crear una hoja. |
| removeSheet | Función para eliminar una hoja. |
Funciones para los títulos y subtítulos
CellStyle(wb, dataFormat=NULL, alignment=NULL, border=NULL, fill=NULL, font=NULL)
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)
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)
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:
| Función | Descripción |
|---|---|
| xlsx.addTitle | Función para agregar título y subtítulo. |
| CellStyle | Función para crear estilos de celda. |
| TABLE_ROWNAMES_STYLE | Función para el formato de filas. |
| TABLE_COLNAMES_STYLE | Función para el formato de columnas. |
| TITLE_STYLE | Función para el formato de título. |
| SUB_TITLE_STYLE | Función para el formato de subtitulos. |
Dentro de la estructura de las funciones se encuentran comandos con diversos argumentos. Tres de ellos son: Font, Alignment y Border.
Font Color (color de la fuente), HeightInPoints (tamaño de letra), IsBold/isItalic ( indica si la fuente debe estar en negrita o cursiva), Underline (grosor del subrayado) y name (fuente a utilizar).
Alignment WrapText (indica si la celda debe ajustarse para mostrar el texto completo), alineación horizontal (“ALIGN_CENTER”, “ALIGN_JUSTIFY”, “ALIGN_LEFT”, “ALIGN_RIGHT”), alineación vertical (“VERTICAL_BOTTOM”, “VERTICAL_CENTER”, “VERTICAL_JUSTIFY”, “VERTICAL_TOP”) y rotation (especifica los grados que se desea girar el texto en la celda).
Border Color (es el color del borde), position (“bottom”, “left”, “top”, rigth“) y pen (estilo de la línea del borde, por ejemplo:”border_dash_dot“,”border_dash_dot_dot“,”border_slanted_dash_dot“, etc.).
Otras funciones
addDataFrame(name, sheet, startRow=3, startColumn=1, colnamesStyle = TABLE_COLNAMES_STYLE, rownamesStyle = TABLE_ROWNAMES_STYLE)
setColumnWidth(sheet, colIndex=c(1:ncol(state.x77)), colWidth=11)
png("boxplot.png", height=800, width=800, res=250, pointsize=8) boxplot(count ~ spray, data = InsectSprays, col = "blue") dev.off()
addPicture("boxplot.png", sheet, scale = 1, startRow = 4, startColumn = 1)
file.remove ("boxplot.png")
donde:
| Función | Descripción |
|---|---|
| addDataFrame | Función para agregar una tabla. StartRow y startColumn son un valor numérico que indican la fila y columna inicial. ColnameStyle y rownameStyle personalizan los nombres de encabezado y fila de la tabla. |
| setColumnWidth | Función para cambiar el ancho de una columna. ColIndex es un vector numérico que indica las columnas que se desea cambiar el grosor, por su parte ColWidth cambia el ancho de la columna. |
| png | Función para crear una gráfica png. |
| addPicture | Función para añadir gráficas png. |
| file.remove | Función para eliminar gráficas. |
Supongamos que los datos anteriores (ya sea que se importen de un archivo por medio de xlsx/csv o se cree la base desde R) pertenecen a un grupo de vendedores de la empresa “Rossy”, la cual quiere analizar sus ventas del primer mes, por lo cual, se elige un histograma para analizar dichas ventas.
A continuación se muestra en el scrip cómo elaborar un histograma previo a que ya sabemos como importar o exportar los datos que tomaremos como base.
Ventas<-c(6,5,3,7,9,6,6,3,5,9,6,4,6,1,1,5,3,7,9,2,1,3,5,9,5,4,8,7,0,3)
opar <- par(bg = "cornsilk")
hist(Ventas,labels=TRUE, axes=FALSE, ylab="",xlab="",main="",col="brown",ylim=c(0,12))
title(main="Ventas Primer Mes",col.main="darkblue",xlab="Articulos Vendidos",ylab="Dias",col.lab="black",cex.lab=0.80, sub="Presenta Isabel LC", col.sub="red",cex.sub=0.7)
axis(1, at=c(0,1,2,3,4,5,6,7,8,9,10),cex.axis=0.8)
axis(2, at=c(0,1,2,3,4,5,6,7,8,9,10), cex.axis=0.8, las=2)
También podemos determinar promedio, moda, desviación estándar, varianza…
median(Ventas)
## [1] 5
mode(Ventas)
## [1] "numeric"
var(Ventas)
## [1] 6.685057
RStudio permite tener una ventaja competitiva sobre cualquier otro programa estadístico gracias a su lenguaje de programación, su capacidad de analisis para una gran cantidad de datos en poco tiempo, se encuentra en mejora continua, está disponible para los sistemas operativos mas comerciales, se pueden publicar en la web de manera directa los archivos que trabajamos (a través de markdown, por ejemplo) y ayuda a la toma de decisiones.
Para finalizar, el uso de paquetes como xlsx y csv son una ventana para dejar los softwares obsoletos, o que dentro de muy poco tiempo lo serán, y adentrarnos al mundo de R, viendo que no sólo es un programa con imagen simple sino que podemos moldearlo y adaptarlo a nuestras necesidades (imagen, diseño, análisis, etc).
alt text