Integrantes del Equipo

Edgar Olvera Jiménez y Angel Alger Estrada Turrubiates.

Introducción

R es un conjunto integrado de programas que permiten manipular datos, analizar y generar gráficos.

Para alimentar a R con datos, podemos acudir a fuentes de información que se encuentran en archivos u hojas de cálculo con la extensión xlsx. Se trata de documentos de salida que, por defecto, se generan a partir del programa Microsoft Excel.

Una manera de realizar este vínculo entre Excel y R, es instalando y usando determinados paquetes.

Openxlsx es un paquete que permite escribir, editar, diseñar, manipular e importar datos de archivos Excel (.xlsx) y representarlos gráficamente.

En opinión de algunos usuarios, openxlsx tiene mejor desempeño que otros paquetes como XLConnect (basado en Java), ya que no tiene problemas de memoria, es más rápido y cuenta con el código necesario para leer y escribir ficheros Excel de manera más sencilla. Debido a lo anterior, es altamente recomendable instalar y usar Openxlsx en R.

A lo largo de este documento explicaremos las formas más sencillas para instalar el paquete openxlsx y haremos algunos ejercicios de uso, análisis y graficado de datos con el propósito de mostrar las principales funciones de openxlsx.


Objetivo

Explicar las maneras más sencillas de instalación y las principales funciones del paquete openxlsx en R.


Instalación de openxlsx

Primera opción. Mediante comandos en RStudio.

1. Comando de instalación.

El paquete se puede instalar directamente en RStudio, para ello debemos ejecutar el comando: install.packages (“openxlsx”)

El usuario observará en la consola de RStudio que la ejecución del comando se está procesando. La duración de la instalación dependerá del desempeño del equipo y de la conexión de internet.

2. Confirmación de instalación.

Una vez que haya terminado la instalación del paquete, en la consola aparecerá un mensaje que indicará el lugar en donde fué descargado el paquete. Para ilustrar el tipo de mensaje citamos un ejemplo: The downloaded binary packages are in /var/folders/2_/khvwn1s552j5hc_2t_sc8k2c0000gp/T//RtmpTrJYsh/downloaded_packages

Este mensaje varía de acuerdo a cada usuario y equipo de computo.

3. Disponibilidad del paquete.

Para que el paquete esté disponible y el usuario pueda utilizarlo cuando vaya a realizar ejercicios asociados con archivos.xlsx, se deberán ejecutar dos comandos: library (“openxlsx”) y require (“openxlsx”)

Al ejecutar los comandos la consola devolverá estos mensajes:

library (“openxlsx”) y require (“openxlsx”)

4. Finalización.

Una vez realizado lo anterior, habremos instalado exitosamente el paquete openxlsx y el mismo se encontrará listo para utilizarse.


Segunda opción. En la pestaña Packages.

1. Localizar la pestaña Packages.

El ambiente de RStudio cuenta con cuatro ventanas que tienen funciones diferentes. En la ventana inferior derecha se encuentra la pestaña denominada packages. El usuario debe seleccionar dicha ventana.

2. Abrir Install.

Una vez seleccionada la pestaña, dar click en Install. Inmediatamente se desplegará una ventana de menor tamaño con tres campos:

  • Install from
  • Packages
  • Install to Library

Se recomienda que el usuario no modifique los valores que aparecen predeterminados en: Install from e Install to Library.

3. Buscar el paquete openxlsx.

En el campo denominado Packages, el usuario debe escribir el nombre del paquete, en este caso openxlsx. Conforme lo escribe, el listado de paquetes hará sugerencias según se aproximen las letras del nombre del paquete. El usuario puede elegir entre tomar la sugerencia o digitar por completo el nombre del paquete.

4. Instalar.

Una vez localizado el paquete, el usuario debe dar click en el botón Install, se recomienda que antes de dar click, el usuario seleccione la opción Install dependencies, ya que ello genera que el paquete se instale con las funciones o paquetes que le son asociados o le complementan, de esta forma evitaremos que en el futuro el paquete no funcione.

El usuario observará en la consola de RStudio que la ejecución del comando se está procesando. La duración de la instalación dependerá del desempeño del equipo y de la conexión de internet.

5. Confirmación de instalación.

Una vez que haya terminado la instalación del paquete, en la consola aparecerá un mensaje que indicará el lugar en donde fué descargado el paquete. Para ilustrar el tipo de mensaje citamos un ejemplo: The downloaded binary packages are in /var/folders/2_/khvwn1s552j5hc_2t_sc8k2c0000gp/T//RtmpscVqJp/downloaded_packages

Este mensaje varía de acuerdo a cada usuario y equipo de computo.

5. Actualizar.

A un costado de la función de instalación se encuentra la función de actualización. El usuario deberá dar actualizar a fin de que el paquete openxlsx se cargue en R.

6. Adjuntar el paquete.

Una vez que aparezca en el listado de paquetes deberá seleccionarse para que se adjunte. Para seleccionarlo basta dar click en la casilla que le corresponde, la cual se llenará de color azul con una paloma blanca de aprobación.

En la consola de RStudio aparecerá el siguiente mensaje que confirma lo anterior:

library(“openxlsx”, lib.loc=“/Library/Frameworks/R.framework/Versions/3.4/Resources/library”)

7. Finalización.

Una vez realizado lo anterior, habremos instalado exitosamente el paquete openxlsx y el mismo se encontrará listo para utilizarse.


Principales funciones

En la ventana inferior derecha de RStudio se encuentra la pestaña denominada Help, la cual contiene información relacionada con cada uno de los paquetes que tengamos insalados.

Para que nos muestre la información de ayuda relacionada con el paquete openxlsx, basta con dar doble click sobre el nombre de dicho paquete.

Inmediatemente se abre la pestaña de ayuda con el documento disponible para lectura titulado: Read, Write and Edit XLSX Files.

En dicho documento se describen alrededor de 70 funciones que pueden utilizarse con openxlsx. Este documento no tiene el propósito de sustituir el documento de ayuda del paquete, solo busca aportar alguna guía y consejos para usar openxlsx en R, por ello solo se mostrarán algunas de sus funciones, a saber:

  • loadWorkbook: Cargue un archivo .xlsx existente.
  • openXL: Abra un archivo de Microsoft Excel (xls / xlsx) o un libro de trabajo de
    openxlsx.
  • openxlsx xlsx: Lectura, escritura y edición.
  • read.xlsx: Leer desde un archivo de Excel o un objeto de libro
  • renameWorksheet: Renombrar una hoja de cálculo.
  • saveWorkbook: Guardar el libro en el archivo.
  • write.xlsx: Escribe datos en un archivo xlsx.
  • insertImage: Insertar una imagen en una hoja de cálculo.
  • insertPlot: Inserta el gráfico actual en una hoja de cálculo.

Dato Curioso (para punto extra¡¡¡¡)

En clase se comentó que las computdoras Mac no tenían por default los acentos y que a la hora de hacer el Knit se perdían (aquí fue cuando el profesor comentó que quien encontrara ese dato obtendría un punto extra). Como se podrá observar se tienen los acentos en el presente documento (siendo que trabajo en Mac), entonces la fórmula es: File/SaveWithEncoding/CSISOLATIN1, y con eso ya se puede guardar el documento y cuando se hace el Knit se tienen los acentos.


Un ejemplo básico para entender Openxlsx tomado del paquete de Openxlxs

El paquete se utiliza principalmente para generar libros de trabajo o workbook. La manera más simple para escribir un libro de trabajo es con el comando write.xlsx().

Por default el comando write.xlsx se llama writeData. Si la asTable es cierta (= TRUE) write.xlsx debe escribir x como una tabla de Excel.

Para poder entender mejor esto desarrollaremos el ejemplo que se encuentra en la ayuda de openxlsx.

Escribir una hoja de trabajo como una tabla de Excel.

library(openxlsx)

"S1"=iris
"S2"=mtcars
wb<-createWorkbook("TabrajoFinal")
addWorksheet(wb,"S1")
addWorksheet(wb, "S2")
addWorksheet(wb, "S3")

writeDataTable(wb, "S1", x=iris)
writeDataTable(wb, "S2", x=mtcars, xy=c("B",3), rowNames = TRUE,tableStyle = "TableStyleLight9")
df<-data.frame("Date"=Sys.Date()-0:19,
               "LogicalT"=TRUE,
               "Time"=Sys.time()-0:19*60*60,
               "Cash"=paste("$",1:20), "Cash2"=31:50,
               "hLink"="https://CRAN.R-project.org/",
               "Percentage"=seq(0,1,length.out = 20),
               "TinyNumbers"=runif(20)/ 1E9, stringAsFactors=FALSE)

class(df$Cash)<-c(class(df$Cash), "currency")
class(df$Cash2)<-c(class(df$Cash2), "accounting")
class(df$hLink)<-c(class(df$hLink), "hyperlink")
class(df$Percentage)<-c(class(df$Percentage), "percentage")
class(df$TinyNumbers)<-c(class(df$TinyNumbers), "scientific")

writeDataTable(wb, "S3", x=df, startRow = 4,rowNames = TRUE, tableStyle = "TableStyleMedium9")
writeDataTable(wb, sheet=1, x=iris,startCol = 7, headerStyle = createStyle(textRotation = 45), withFilter = FALSE)

#openXL(wb)

saveWorkbook(wb, "writeDataTebleExample1.xlsx", overwrite = TRUE)

Como dato curioso cuando se escribe el comando write.xlsx (iris) R nos señala que este es un famoso dataset de Fisher y Anderson que proporciona las medidas en centímetros de las variables de la cepa de tres especies de flores Iris, lo cual es bastante sorprendente.

Escribir un directorio de trabajo.

options("openxlsx.borderColour"="#4F80BD")
write.xlsx(iris, file = "writeXLSX1.xlsx", colNames=TRUE, borders="columns")
write.xlsx(iris, file = "writeXLSC2.xlsx", colNames=TRUE, borders="surrounding")
hs<-createStyle(textDecoration = "BOLD", fontColour = "#FFFFFF", fontSize = 12,
                fontName = "Arial Narrow",fgFill = "#4F80BD")
write.xlsx(iris,file="writeXLSX3.xlsx", colNames=TRUE, borders="rows", headerStyle=hs)

Escribir un directorio de trabajo con variables.

#Escribir el directorio de trabajo.
write.xlsx(iris, file = "writeXLSX1.xlsx")
write.xlsx(iris, file= "writeXLSXTable1.xlsx", asTable = FALSE)
#Escribir una lista de data.frames para hojas de trabajo individual.
list("IRIS" = iris)
## $IRIS
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1         3.0          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 148          6.5         3.0          5.2         2.0  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9         3.0          5.1         1.8  virginica
write.xlsx(iris, file = "writeXLXS2.xlsx")
write.xlsx(iris, file = "writeXLSX2Table2.xlsx", asTable = FALSE)
options("openxlsx.borderColour"="#4F80BD")
options("openxlsx.borderStyle"="thin")
options("openxlsx.dateFormat"="mm/dd/yyyy")
options("openxlsx.datetimeFormat"="yyyy-mm-dd hh:mm:ss")
options("openxlsx.numFmt"=NULL)

df<-data.frame("Date"=Sys.Date()-0:19,
               "LogicalT"=TRUE,
               "Time"=Sys.time()-0:19*60*60,
               "Cash"=paste("$",1:20), "Cash2"=31:50,
               "hLink"="https://CRAN.R-project.org/",
               "Percentage"=seq(0,1,length.out = 20),
               "TinyNumbers"=runif(20)/ 1E9, stringAsFactors=FALSE)

class(df$Cash)<-c(class(df$Cash), "currency")
class(df$Cash2)<-c(class(df$Cash2), "accounting")
class(df$hLink)<-c(class(df$hLink), "hyperlink")
class(df$Percentage)<-c(class(df$Percentage), "percentage")
class(df$TinyNumbers)<-c(class(df$TinyNumbers), "scientific")

write.xlsx(df, "writeXLSX3.xlsx")
write.xlsx(df, file = "writeXLSX3Table3.xlsx", asTable = FALSE)
#Se puede agregar estilo adicional.
hs<-createStyle(fontColour = "#ffffff", fgFill = "#4F80BD",
                halign = "center", valign = "center", textDecoration = "Bold",
                border = "TopBottomLeftRight", textRotation = 45)

write.xlsx(iris,file = "writeXLSX4.xlsx", borders="rows",headerStyle=hs)
write.xlsx(iris,file = "writeXLSX5.xlsx", borders="columns", headerStyle=hs)

write.xlsx(iris, "writeXLSXTable4.xlsx", asTable = FALSE)
headerStyle= createStyle(textRotation = 45)
#Cuando escribes una lista, el estilo aplica a todos los elementos de la misma.
list("IRIS"=iris, "colClasses"=df)
## $IRIS
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1         3.0          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 148          6.5         3.0          5.2         2.0  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9         3.0          5.1         1.8  virginica
## 
## $colClasses
##          Date LogicalT                Time Cash Cash2
## 1  2017-10-15     TRUE 2017-10-15 18:24:44  $ 1    31
## 2  2017-10-14     TRUE 2017-10-15 17:24:44  $ 2    32
## 3  2017-10-13     TRUE 2017-10-15 16:24:44  $ 3    33
## 4  2017-10-12     TRUE 2017-10-15 15:24:44  $ 4    34
## 5  2017-10-11     TRUE 2017-10-15 14:24:44  $ 5    35
## 6  2017-10-10     TRUE 2017-10-15 13:24:44  $ 6    36
## 7  2017-10-09     TRUE 2017-10-15 12:24:44  $ 7    37
## 8  2017-10-08     TRUE 2017-10-15 11:24:44  $ 8    38
## 9  2017-10-07     TRUE 2017-10-15 10:24:44  $ 9    39
## 10 2017-10-06     TRUE 2017-10-15 09:24:44 $ 10    40
## 11 2017-10-05     TRUE 2017-10-15 08:24:44 $ 11    41
## 12 2017-10-04     TRUE 2017-10-15 07:24:44 $ 12    42
## 13 2017-10-03     TRUE 2017-10-15 06:24:44 $ 13    43
## 14 2017-10-02     TRUE 2017-10-15 05:24:44 $ 14    44
## 15 2017-10-01     TRUE 2017-10-15 04:24:44 $ 15    45
## 16 2017-09-30     TRUE 2017-10-15 03:24:44 $ 16    46
## 17 2017-09-29     TRUE 2017-10-15 02:24:44 $ 17    47
## 18 2017-09-28     TRUE 2017-10-15 01:24:44 $ 18    48
## 19 2017-09-27     TRUE 2017-10-15 00:24:44 $ 19    49
## 20 2017-09-26     TRUE 2017-10-14 23:24:44 $ 20    50
##                          hLink Percentage  TinyNumbers stringAsFactors
## 1  https://CRAN.R-project.org/ 0.00000000 7.165466e-10           FALSE
## 2  https://CRAN.R-project.org/ 0.05263158 3.676243e-11           FALSE
## 3  https://CRAN.R-project.org/ 0.10526316 9.343434e-11           FALSE
## 4  https://CRAN.R-project.org/ 0.15789474 9.479705e-10           FALSE
## 5  https://CRAN.R-project.org/ 0.21052632 4.493120e-10           FALSE
## 6  https://CRAN.R-project.org/ 0.26315789 3.942645e-10           FALSE
## 7  https://CRAN.R-project.org/ 0.31578947 8.225644e-10           FALSE
## 8  https://CRAN.R-project.org/ 0.36842105 5.586651e-10           FALSE
## 9  https://CRAN.R-project.org/ 0.42105263 3.128610e-10           FALSE
## 10 https://CRAN.R-project.org/ 0.47368421 3.508345e-10           FALSE
## 11 https://CRAN.R-project.org/ 0.52631579 7.406200e-10           FALSE
## 12 https://CRAN.R-project.org/ 0.57894737 2.032066e-10           FALSE
## 13 https://CRAN.R-project.org/ 0.63157895 6.869927e-10           FALSE
## 14 https://CRAN.R-project.org/ 0.68421053 6.716916e-10           FALSE
## 15 https://CRAN.R-project.org/ 0.73684211 8.815152e-10           FALSE
## 16 https://CRAN.R-project.org/ 0.78947368 7.484646e-10           FALSE
## 17 https://CRAN.R-project.org/ 0.84210526 7.402504e-10           FALSE
## 18 https://CRAN.R-project.org/ 0.89473684 4.228408e-10           FALSE
## 19 https://CRAN.R-project.org/ 0.94736842 7.565603e-10           FALSE
## 20 https://CRAN.R-project.org/ 1.00000000 6.654049e-10           FALSE
write.xlsx(iris,file = "writeXLSX6.xlsx", borders="columns",headerStyle=hs)
write.xlsx(iris,file = "writeXLSXTable6.xlsx", asTable = FALSE, tableStyle="TableStyleMedium9")

#openXL(wb)

wb<-write.xlsx(iris,"writeXLSX6.xlsx")
setColWidths(wb,sheet = 1, cols = 1:5, widths = 20)
saveWorkbook(wb, "writeXLSX6.xlsx", overwrite = TRUE)

Un ejemplo más, pero ahora de un libro de trabajo básico.

Para este ejemplo necesitaremos el paquete ggplot2

library(ggplot2)
#Estableciendo el color de los bordes y el estilo.
wb<-createWorkbook()
options("openxlsx.borderColour"="#4F80BD")
options("openxlsc.borderStyle"="thin")
modifyBaseFont(wb, fontSize = 10, fontName = "Arial Narrow")

addWorksheet(wb, sheetName = "Motor Trend Car Road Test", gridLines = FALSE)
addWorksheet(wb, sheetName = "Iris", gridLines = FALSE)
#Hoja 1
freezePane(wb, sheet = 1, firstRow = TRUE, firstCol = TRUE) ## freeze first row and column
writeDataTable(wb,sheet = 1,x=mtcars, colNames = TRUE, rowNames = TRUE)
setColWidths(wb,sheet = 1, cols = "A", widths = 18)
writeDataTable(wb,sheet = 2,iris,startCol = "L",startRow = 2)
qplot(data = iris,x=Sepal.Length,y=Sepal.Width,colour=Species)

insertPlot(wb,2,xy=c("B",16))
means<-aggregate(x=iris [,-5],by=list(iris$Species), FUN=mean)
vars<-aggregate(x=iris[,-5],by=list(iris$Species),FUN=var)

#openXL(wb)

saveWorkbook(wb,"basics.xlsx", overwrite = TRUE)

Leer un documento de Excel.

Con openlxsx se pueden leer documentos de Excel y transformarlos en un data.frame

xlsxFile<-system.file("readTest.xlsx", package = "openxlsx")
df1<-read.xlsx(xlsxFile = xlsxFile, sheet = 1,skipEmptyRows = FALSE)
sapply(df1,class)
##        Var1        Var2        Var3        Var4        Var5        Var6 
##   "logical"   "numeric"   "numeric" "character"   "numeric" "character" 
##        Var7 
##   "numeric"
df2<-read.xlsx(xlsxFile = xlsxFile, sheet = 3, skipEmptyRows = TRUE)
df2$Date<-convertToDate(df2$Date)
sapply(df2,class)
##        Date       value        word        bool      wordZ2 
##      "Date"   "numeric" "character"   "logical" "character"
df2<-read.xlsx(xlsxFile = xlsxFile,sheet = 3,skipEmptyRows = TRUE,
               detectDates = TRUE)
sapply(df2,class)
##        Date       value        word        bool      wordZ2 
##      "Date"   "numeric" "character"   "logical" "character"
head(df2)
##         Date     value      word  bool  wordZ2
## 1 2014-04-28 0.8390764 N-U-B-R-A FALSE FALSE-Z
## 2 2014-04-27 0.8863800 N-Z-P-S-Y  TRUE  TRUE-Z
## 3 2014-04-26 0.5741314 C-G-D-X-H  TRUE  TRUE-Z
## 4 2014-04-25 0.1366065      <NA> FALSE FALSE-Z
## 5 2014-04-24 0.3692582 B-K-A-O-W  TRUE  TRUE-Z
## 6 2014-04-23        NA H-P-G-O-K  TRUE  TRUE-Z
wb<-loadWorkbook(system.file("readTest.xlsx", package = "openxlsx"))
df3<-read.xlsx(wb,sheet = 2,skipEmptyRows = FALSE,colNames = TRUE)
df4<-read.xlsx(xlsxFile,sheet=2,skipEmptyRows = FALSE,colNames = TRUE)
all.equal(df3,df4)
## [1] TRUE
wb<-loadWorkbook(system.file("readTest.xlsx",package = "openxlsx"))
df3<-read.xlsx(wb,sheet = 2,skipEmptyRows = FALSE,
               cols = c(1,4), rows = c(1,3,4))
#openXL(wb)

saveWorkbook(wb, "readTest.xlsx", overwrite = TRUE)

Traer el documento de Excel desde una URL.

xlsxFile<- "https://github.com/awalker89/openxlsx/raw/master/inst/readTest.xlsx"
head(read.xlsx(xlsxFile))
##    Var1 Var2 Var3 Var4  Var5         Var6 Var7
## 1  TRUE    1 1.00    a 42042 3209324 This   NA
## 2  TRUE   NA   NA    b 42041         <NA>   NA
## 3  TRUE    2 1.34    c 42040         <NA>   NA
## 4 FALSE    2   NA <NA>    NA         <NA>   NA
## 5 FALSE    3 1.56    e    NA         <NA>   NA
## 6 FALSE    1 1.70    f 42037         <NA>   NA
xlsxFile<-system.file("readTest.xlsx", package = "openxlsx")


df1<-read.xlsx(xlsxFile = "readTest.xlsx", sheet = 1,skipEmptyRows = FALSE)
sapply(df1,class)
##        Var1        Var2        Var3        Var4        Var5        Var6 
##   "logical"   "numeric"   "numeric" "character"   "numeric" "character" 
##        Var7 
##   "numeric"
df2<-read.xlsx(xlsxFile = xlsxFile, sheet = 3, skipEmptyRows = TRUE)
df2$Date<-convertToDate(df2$Date)
sapply(df2,class)
##        Date       value        word        bool      wordZ2 
##      "Date"   "numeric" "character"   "logical" "character"
df2<-read.xlsx(xlsxFile = xlsxFile,sheet = 3,skipEmptyRows = TRUE,
               detectDates = TRUE)
sapply(df2,class)
##        Date       value        word        bool      wordZ2 
##      "Date"   "numeric" "character"   "logical" "character"
head(df2)
##         Date     value      word  bool  wordZ2
## 1 2014-04-28 0.8390764 N-U-B-R-A FALSE FALSE-Z
## 2 2014-04-27 0.8863800 N-Z-P-S-Y  TRUE  TRUE-Z
## 3 2014-04-26 0.5741314 C-G-D-X-H  TRUE  TRUE-Z
## 4 2014-04-25 0.1366065      <NA> FALSE FALSE-Z
## 5 2014-04-24 0.3692582 B-K-A-O-W  TRUE  TRUE-Z
## 6 2014-04-23        NA H-P-G-O-K  TRUE  TRUE-Z
wb<-loadWorkbook(system.file("readTest.xlsx", package = "openxlsx"))
df3<-read.xlsx(wb,sheet = 2,skipEmptyRows = FALSE,colNames = TRUE)
df4<-read.xlsx(xlsxFile,sheet=2,skipEmptyRows = FALSE,colNames = TRUE)
all.equal(df3,df4)
## [1] TRUE
wb<-loadWorkbook(system.file("readTest.xlsx",package = "openxlsx"))
df3<-read.xlsx(wb,sheet = 2,skipEmptyRows = FALSE,
               cols = c(1,4), rows = c(1,3,4))

#openXL(wb)

saveWorkbook(wb, "readTest.xlsx2", overwrite = TRUE)

Otro ejemplo de traer un documento de Excel desde una URL.

xlsxFile<-"https://data.unicef.org/wp-content/uploads/2015/12/CoD_ARI_Dec-2015_WHO_MCEE_236.xlsx"
head(read.xlsx(xlsxFile))
##   Estimates.of.child.cause.of.death,.acute.respiratory.infection.2015.
## 1                                                                 <NA>
## 2                                                                 iso3
## 3                                                                 <NA>
## 4                                                                  AFG
## 5                                                                  ALB
## 6                                                                  DZA
##                  X2   X3                    X4                         X5
## 1              <NA> <NA> Total Neonatal deaths Total Post-Neonatal deaths
## 2 Country/area name year                   nnd                        pnd
## 3            Global 2015    2680667.0101563334         3261269.5344924927
## 4       Afghanistan 2015        36241.99609375             58018.99609375
## 5           Albania 2015                   279                        339
## 6           Algeria 2015       14772.998046875            9496.0009765625
##                                                   X6
## 1 Neonatal deaths due to Acute Respiratory Infection
## 2                                               neo9
## 3                                 159720.15919089821
## 4                                 2341.3379218341306
## 5                                 17.594004146754742
## 6                                 741.77330271275082
##                                                       X7
## 1 Postneonatal deaths due to Acute Respiratory Infection
## 2                                                  post9
## 3                                     760415.85375327477
## 4                                     16329.555627962756
## 5                                     56.012041660517355
## 6                                     2388.6192226992739
##                                                    X8
## 1 Underfive deaths due to Acute Respiratory Infection
## 2                                              ufive9
## 3                                  920136.02420403063
## 4                                     18670.892578125
## 5                                  73.606048583984375
## 6                                      3130.392578125
##                                                                           X9
## 1 Neonatal death rate from Acute Respiratory Infection (per 1000 livebirths)
## 2                                                                      rneo9
## 3                                                         1.1434693336486816
## 4                                                         2.2934191226959229
## 5                                                         0.3906913697719574
## 6                                                        0.77825230360031128
##                                                                              X10
## 1 Postneonatal death rate from Acute Respiratory Infection (per 1000 livebirths)
## 2                                                                         rpost9
## 3                                                             5.4439730644226074
## 4                                                             15.995348930358887
## 5                                                             1.2437999248504639
## 6                                                              2.506087064743042
##                                                                           X11
## 1 Underfive death rate from Acute Respiratory Infection (per 1000 livebirths)
## 2                                                                     rufive9
## 3                                                          6.5874423980712891
## 4                                                          18.288766860961914
## 5                                                          1.6344913244247437
## 6                                                           3.284339427947998
##                                                    X12
## 1 % neonatal deaths due to Acute Respiratory Infection
## 2                                                fneo9
## 3                                5.9582244604825974E-2
## 4                                6.4602896571159363E-2
## 5                                6.3060946762561798E-2
## 6                                5.0211425870656967E-2
##                                                         X13
## 1 % post-neonatal deaths due to Acute Respiratory Infection
## 2                                                    fpost9
## 3                                       0.23316559195518494
## 4                                       0.28145188093185425
## 5                                        0.1652272641658783
## 6                                       0.25153949856758118
##                                                     X14
## 1 % underfive deaths due to Acute Respiratory Infection
## 2                                               fufive9
## 3                                   0.15485456585884094
## 4                                   0.19807656109333038
## 5                                   0.11910364031791687
## 6                                   0.12898729741573334
download.file(xlsxFile, destfile = "CoD_ARI_Dec-2015_WHO_MCEE_236.xlsx")
Uni2<-read.xlsx("CoD_ARI_Dec-2015_WHO_MCEE_236.xlsx")
save(Uni2, file = "CoD_ARI_Dec-2015_WHO_MCEE_236.xlsx")
xlsxFile<-system.file("CoD_ARI_Dec-2015_WHO_MCEE_236.xlsx", package = "openxlsx")

wb<-createWorkbook()
options("openxlsx.borderColour"="#4F80BD")
options("openxlsc.borderStyle"="thin")
modifyBaseFont(wb, fontSize = 10, fontName = "Arial Narrow")

addWorksheet(wb, sheetName = "Muerte Vias Respiratorias", gridLines = FALSE)

#Hoja 1
freezePane(wb, sheet = 1, firstRow = TRUE, firstCol = TRUE) ## freeze first row and column
writeDataTable(wb,sheet = 1,x=Uni2, colNames = TRUE, rowNames = TRUE)

#openXL(wb)

saveWorkbook(wb,"muerteviasrespiratorias", overwrite = TRUE)

Manipular un documento de Excel en openxlsx.

attach(iris)

# Statistics for the four datasets:
mean(Sepal.Length); mean(Sepal.Width); mean(Petal.Length); mean(Petal.Width)
## [1] 5.843333
## [1] 3.057333
## [1] 3.758
## [1] 1.199333
sd(Sepal.Length); sd(Sepal.Width);sd(Petal.Length);sd(Petal.Width)
## [1] 0.8280661
## [1] 0.4358663
## [1] 1.765298
## [1] 0.7622377
cor(Sepal.Length,Sepal.Width);cor(Petal.Length,Petal.Width)
## [1] -0.1175698
## [1] 0.9628654
medias<-c(mean(Sepal.Length), mean(Petal.Length))

# -----------------------------------------------------------------
# Exploración del contenido
# -----------------------------------------------------------------
class(iris)  # Clase del objeto
## [1] "data.frame"
typeof(iris) # Tipo del objeto
## [1] "list"
str(iris)    # Información sobre su estructura
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
summary(iris) # Resumen de contenido
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 
head(iris)  # Primeras filas 
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
tail(iris)  # Últimas filas
##     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
## 145          6.7         3.3          5.7         2.5 virginica
## 146          6.7         3.0          5.2         2.3 virginica
## 147          6.3         2.5          5.0         1.9 virginica
## 148          6.5         3.0          5.2         2.0 virginica
## 149          6.2         3.4          5.4         2.3 virginica
## 150          5.9         3.0          5.1         1.8 virginica
# Selección de filas y columnas
iris$Sepal.Length[which(iris$Species == 'versicolor')] 
##  [1] 7.0 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2 5.0 5.9 6.0 6.1 5.6 6.7 5.6
## [18] 5.8 6.2 5.6 5.9 6.1 6.3 6.1 6.4 6.6 6.8 6.7 6.0 5.7 5.5 5.5 5.8 6.0
## [35] 5.4 6.0 6.7 6.3 5.6 5.5 5.5 6.1 5.8 5.0 5.6 5.7 5.7 6.2 5.1 5.7
# -----------------------------------------------------------------
# Estadística descriptiva
# -----------------------------------------------------------------

mean(iris$Sepal.Length)
## [1] 5.843333
lapply(iris[,1:4], mean)
## $Sepal.Length
## [1] 5.843333
## 
## $Sepal.Width
## [1] 3.057333
## 
## $Petal.Length
## [1] 3.758
## 
## $Petal.Width
## [1] 1.199333
mean(iris$Sepal.Length[which(iris$Species == 'versicolor')])
## [1] 5.936
mean(subset(iris, Species == 'versicolor', select=Sepal.Length)$Sepal.Length)
## [1] 5.936
sapply(unique(iris$Species), function(specie) mean(iris$Sepal.Length[iris$Species == specie]))
## [1] 5.006 5.936 6.588
# Hmisc
#if(is.installed('Hmisc'))
  #install.packages('Hmisc')
library('Hmisc')
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
## 
##     format.pval, round.POSIXt, trunc.POSIXt, units
# -----------------------------------------------------------------
# Agrupamiento de datos
# -----------------------------------------------------------------
table(iris$Sepal.Length,iris$Species)  # Conteo para cada lóngitud de sépalo por especie
##      
##       setosa versicolor virginica
##   4.3      1          0         0
##   4.4      3          0         0
##   4.5      1          0         0
##   4.6      4          0         0
##   4.7      2          0         0
##   4.8      5          0         0
##   4.9      4          1         1
##   5        8          2         0
##   5.1      8          1         0
##   5.2      3          1         0
##   5.3      1          0         0
##   5.4      5          1         0
##   5.5      2          5         0
##   5.6      0          5         1
##   5.7      2          5         1
##   5.8      1          3         3
##   5.9      0          2         1
##   6        0          4         2
##   6.1      0          4         2
##   6.2      0          2         2
##   6.3      0          3         6
##   6.4      0          2         5
##   6.5      0          1         4
##   6.6      0          2         0
##   6.7      0          3         5
##   6.8      0          1         2
##   6.9      0          1         3
##   7        0          1         0
##   7.1      0          0         1
##   7.2      0          0         3
##   7.3      0          0         1
##   7.4      0          0         1
##   7.6      0          0         1
##   7.7      0          0         4
##   7.9      0          0         1
cortes <- seq(from=4, to=8, by=0.5)
seplen <- cut(iris$Sepal.Length,breaks=cortes)  # Discretizar la longitud de sépalo
table(seplen, iris$Species)  
##          
## seplen    setosa versicolor virginica
##   (4,4.5]      5          0         0
##   (4.5,5]     23          3         1
##   (5,5.5]     19          8         0
##   (5.5,6]      3         19         8
##   (6,6.5]      0         12        19
##   (6.5,7]      0          8        10
##   (7,7.5]      0          0         6
##   (7.5,8]      0          0         6
# split, sample, subset
bySpecies <- split(iris,iris$Species) # Separar en grupos segun un factor
str(bySpecies)
## List of 3
##  $ setosa    :'data.frame':  50 obs. of  5 variables:
##   ..$ Sepal.Length: num [1:50] 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##   ..$ Sepal.Width : num [1:50] 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##   ..$ Petal.Length: num [1:50] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##   ..$ Petal.Width : num [1:50] 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##   ..$ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ versicolor:'data.frame':  50 obs. of  5 variables:
##   ..$ Sepal.Length: num [1:50] 7 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2 ...
##   ..$ Sepal.Width : num [1:50] 3.2 3.2 3.1 2.3 2.8 2.8 3.3 2.4 2.9 2.7 ...
##   ..$ Petal.Length: num [1:50] 4.7 4.5 4.9 4 4.6 4.5 4.7 3.3 4.6 3.9 ...
##   ..$ Petal.Width : num [1:50] 1.4 1.5 1.5 1.3 1.5 1.3 1.6 1 1.3 1.4 ...
##   ..$ Species     : Factor w/ 3 levels "setosa","versicolor",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ virginica :'data.frame':  50 obs. of  5 variables:
##   ..$ Sepal.Length: num [1:50] 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3 6.7 7.2 ...
##   ..$ Sepal.Width : num [1:50] 3.3 2.7 3 2.9 3 3 2.5 2.9 2.5 3.6 ...
##   ..$ Petal.Length: num [1:50] 6 5.1 5.9 5.6 5.8 6.6 4.5 6.3 5.8 6.1 ...
##   ..$ Petal.Width : num [1:50] 2.5 1.9 2.1 1.8 2.2 2.1 1.7 1.8 1.8 2.5 ...
##   ..$ Species     : Factor w/ 3 levels "setosa","versicolor",..: 3 3 3 3 3 3 3 3 3 3 ...
mean(bySpecies$setosa$Sepal.Length)
## [1] 5.006
# -----------------------------------------------------------------
# Ordenación de datos
# -----------------------------------------------------------------

sortedIris <- iris[order(iris$Petal.Length),]
head(sortedIris)
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 23          4.6         3.6          1.0         0.2  setosa
## 14          4.3         3.0          1.1         0.1  setosa
## 15          5.8         4.0          1.2         0.2  setosa
## 36          5.0         3.2          1.2         0.2  setosa
## 3           4.7         3.2          1.3         0.2  setosa
## 17          5.4         3.9          1.3         0.4  setosa
# -----------------------------------------------------------------
# Particionamiento de datos
# -----------------------------------------------------------------

# Primeras n filas para training restantes para test
nTraining <- as.integer(nrow(iris)*.75)
training <- iris[1:nTraining,]
test <- iris[(nTraining+1):nrow(iris),]
nrow(training) + nrow(test) == nrow(iris)
## [1] TRUE
# Otra forma
set.seed(4242)
indices <- sample(1:nrow(iris),nTraining)
particion <- list(training=iris[indices,], test=iris[-indices,])
lapply(particion,nrow)
## $training
## [1] 112
## 
## $test
## [1] 38
particion$test
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 55           6.5         2.8          4.6         1.5 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 104          6.3         2.9          5.6         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 149          6.2         3.4          5.4         2.3  virginica
# -----------------------------------------------------------------
# ggplot2: Nubes de puntos
# -----------------------------------------------------------------
library(ggplot2)

qplot(iris$Sepal.Length)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

qplot(Sepal.Length, Sepal.Width, data=iris, colour=Species, size=Petal.Width)

# -----------------------------------------------------------------
# ggplot2: Gráfica de líneas
# -----------------------------------------------------------------
qplot(Petal.Length, Sepal.Length, data=iris, color=Species) +
  geom_line()

qplot(Petal.Length, Sepal.Length, data=iris, color=Species) +
  geom_line(aes(linetype = Species))