Openxlsx para R

El presente documento pretende establecer un manual mínimo para poder trabajar el programa openxlsx en R.

Openxlsx simplifica la creación de Excel, archivos con terminación .xlsx, proveyendo una interface de alto nivel para escribir, estilizar y editar hojas de trabajo. A través del uso de ‘Rcpp’, los tiempos de lectura y escritura pueden ser comparables a los de paquetes ‘xlsx’ y ‘XLConnect’ con el beneficio adicional de librarlo de la dependencia de Java.

Para comenzar se tiene que instalar el programa. Esto es, en RStudio se abre la pestaña de Packages y en el botón Install se busca el programa y se descarga.

El programa se abre con el comando “library”:

library(openxlsx)

A partir de ese momento ya se puede trabajar en openxlsx.

Ayuda????

Para los neófitos en R (como su servidor) y más en openxlsx (ídem), el paquete integra una forma de ayuda que se pude consultar con algunos comandos básicos así como con algunos documentos en pdf en los que se pueden observar instrucciones para la instalación y ejemplos sencillos para practicar.

help("openxlsx-package")

Otra forma de obtener ayuda para poder empezar a entender openxlsx, es ir a la pestaña de packages de RStudio, buscar el paquete y darle click con el cursos sobre el nombre del paquete. De modo automático despliega hipervínculos con documentación en pdf y algunos ejemplos, así como algunas páginas de ayuda.

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.

"S1"=iris
"S2"=mtcars
wb<-createWorkbook("PruebaTrabajoFinal1")
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, "writeDataTebleExample.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-13     TRUE 2017-10-13 15:47:00  $ 1    31
## 2  2017-10-12     TRUE 2017-10-13 14:47:00  $ 2    32
## 3  2017-10-11     TRUE 2017-10-13 13:47:00  $ 3    33
## 4  2017-10-10     TRUE 2017-10-13 12:47:00  $ 4    34
## 5  2017-10-09     TRUE 2017-10-13 11:47:00  $ 5    35
## 6  2017-10-08     TRUE 2017-10-13 10:47:00  $ 6    36
## 7  2017-10-07     TRUE 2017-10-13 09:47:00  $ 7    37
## 8  2017-10-06     TRUE 2017-10-13 08:47:00  $ 8    38
## 9  2017-10-05     TRUE 2017-10-13 07:47:00  $ 9    39
## 10 2017-10-04     TRUE 2017-10-13 06:47:00 $ 10    40
## 11 2017-10-03     TRUE 2017-10-13 05:47:00 $ 11    41
## 12 2017-10-02     TRUE 2017-10-13 04:47:00 $ 12    42
## 13 2017-10-01     TRUE 2017-10-13 03:47:00 $ 13    43
## 14 2017-09-30     TRUE 2017-10-13 02:47:00 $ 14    44
## 15 2017-09-29     TRUE 2017-10-13 01:47:00 $ 15    45
## 16 2017-09-28     TRUE 2017-10-13 00:47:00 $ 16    46
## 17 2017-09-27     TRUE 2017-10-12 23:47:00 $ 17    47
## 18 2017-09-26     TRUE 2017-10-12 22:47:00 $ 18    48
## 19 2017-09-25     TRUE 2017-10-12 21:47:00 $ 19    49
## 20 2017-09-24     TRUE 2017-10-12 20:47:00 $ 20    50
##                          hLink Percentage  TinyNumbers stringAsFactors
## 1  https://CRAN.R-project.org/ 0.00000000 4.776111e-10           FALSE
## 2  https://CRAN.R-project.org/ 0.05263158 3.781114e-10           FALSE
## 3  https://CRAN.R-project.org/ 0.10526316 3.156598e-10           FALSE
## 4  https://CRAN.R-project.org/ 0.15789474 8.874384e-10           FALSE
## 5  https://CRAN.R-project.org/ 0.21052632 1.387223e-11           FALSE
## 6  https://CRAN.R-project.org/ 0.26315789 1.807253e-10           FALSE
## 7  https://CRAN.R-project.org/ 0.31578947 2.184985e-10           FALSE
## 8  https://CRAN.R-project.org/ 0.36842105 5.092589e-10           FALSE
## 9  https://CRAN.R-project.org/ 0.42105263 2.927741e-10           FALSE
## 10 https://CRAN.R-project.org/ 0.47368421 9.976650e-10           FALSE
## 11 https://CRAN.R-project.org/ 0.52631579 3.098939e-11           FALSE
## 12 https://CRAN.R-project.org/ 0.57894737 8.540216e-10           FALSE
## 13 https://CRAN.R-project.org/ 0.63157895 6.578133e-10           FALSE
## 14 https://CRAN.R-project.org/ 0.68421053 7.605837e-10           FALSE
## 15 https://CRAN.R-project.org/ 0.73684211 5.851990e-10           FALSE
## 16 https://CRAN.R-project.org/ 0.78947368 2.946687e-10           FALSE
## 17 https://CRAN.R-project.org/ 0.84210526 3.228042e-10           FALSE
## 18 https://CRAN.R-project.org/ 0.89473684 9.610529e-10           FALSE
## 19 https://CRAN.R-project.org/ 0.94736842 3.623991e-10           FALSE
## 20 https://CRAN.R-project.org/ 1.00000000 3.263440e-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
# -----------------------------------------------------------------
#unlist(list(
 # media = mean(valores), 
  #desviacion = sd(valores), 
  #varianza = var(valores),
  #minimo = min(valores), 
  #maximo = max(valores),
  #mediana = median(valores),
  #rango = range(valores),
  #quartiles = quantile(valores)))

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
# -----------------------------------------------------------------
#sort(valores)
#order(valores)
#rank(valores)
#rank(valores, ties.method='first')
# Ordenar un data frame por una cierta columna
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
#close(pb)

# -----------------------------------------------------------------
# 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))