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.
Explicar las maneras más sencillas de instalación y las principales funciones del paquete openxlsx en R.
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.
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:
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.
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:
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.
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.
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.
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 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)
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)
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)
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)
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)
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))