Contenido
- Simplificación de formato

- Crear libro de trabajo|

- Leer datos de unlibro de trabajo|

- Llamar a un libro de trabajo respentando su formato|

- Escribir datos en un archivo.xls|

_- Adicionar y eliminar una tabla*_|

- Calculo de media, mediana, desviación estandar, Resumen y graficación de datos|

openxlsx

En openxlsx, se requiere una aplicación de zip para que esté disponible para R. En Windows, la manera más sencilla de configurar esto es instalar RTools en : https://cran.rproyect.org/bin/windows/Rtools/

Durante la instalación hay que tener cuidado de marcar el path adecuado.

openxlsx simplifica el proceso de escribir y peinar archivos xlsx de Excel desde R y elimina la dependencia de Java.

El paquete openxlsx utiliza opciones globales para simplificar el formato:

  • options(“openxlsx.borderColour” = “black”)

  • options(“openxlsx.borderStyle” = “thin”)

  • options(“openxlsx.dateFormat” = “mm/dd/yyyy”)

  • options(“openxlsx.datetimeFormat” = “yyyy-mm-dd hh:mm:ss”)

  • options(“openxlsx.numFmt” = NULL)

  • options(“openxlsx.paperSize” = 9) ## A4

  • options(“openxlsx.orientation” = “portrait”) ## page orientation

Como se aplica en el siguiente ejemplo:
## Siempre que se vaya utilizar comandos de openxlsx, tienes que llamar a la libreria

library(openxlsx)

## Para escribir en un data.frame

df <- data.frame("Date" = Sys.Date()-0:4,
"Logical" = c(TRUE, FALSE, TRUE, TRUE, FALSE),
"Currency" = paste("$",-2:2),
"Accounting" = -2:2,
"hLink" = "https://CRAN.R-project.org/",
"Percentage" = seq(-1, 1, length.out=5),
"TinyNumber" = runif(5) / 1E9, stringsAsFactors = FALSE)
class(df$Currency) <- "currency"
class(df$Accounting) <- "accounting"
class(df$hLink) <- "hyperlink"
class(df$Percentage) <- "percentage"
class(df$TinyNumber) <- "scientific"

## El formateo se puede aplicar simplemente a través de las funciones de escritura.
## Las opciones globales se pueden configurar para simplificar aún más las cosas.

options("openxlsx.borderStyle" = "thin")
options("openxlsx.borderColour" = "#4F81BD")

## Puedes crear un libro de trabajo y adicionar una hoja de trabajo

wb <- createWorkbook()
addWorksheet(wb, "writeData auto-formatting")
writeData(wb, 1, df, startRow = 2, startCol = 2)
writeData(wb, 1, df, startRow = 12, startCol = 2, borders = "surrounding")
writeData(wb, 1, df, startRow = 22, startCol = 2, borders = "rows")
writeData(wb, 1, df, startRow = 32, startCol = 2, borders ="columns")
writeData(wb, 1, df, startRow = 39, startCol = 2, borders ="all")

## crear los estilos de las cabeceras

hs1 <- createStyle(fgFill = "#4F81BD", halign = "CENTER", textDecoration = "Bold",
border = "Bottom", fontColour = "blue")
writeData(wb, 1, df, startRow = 25, startCol = 10, headerStyle = hs1,
borders = "rows", borderStyle = "thin")

## para la visualización del texto de una columna de hipervínculo simplemente se escribe sobre esas celdas
writeData(wb, sheet = 1, x = paste("Ruta", 1:5), startRow = 26, startCol = 14)
1
## [1] 1
## escribiendo como una tabla de Excel

addWorksheet(wb, "writeDataTable")
writeDataTable(wb, 2, df, startRow = 2, startCol = 2)
writeDataTable(wb, 2, df, startRow = 9, startCol = 2, tableStyle = "TableStyleLight9")
writeDataTable(wb, 2, df, startRow = 16, startCol = 2, tableStyle = "TableStylemedium2")
writeDataTable(wb, 2, df, startRow = 23, startCol = 2, tableStyle = "TableStyleMedium23")
writeData(wb, sheet = 2, x = paste("Ruta", 1:5), startRow = 3, startCol = 6)
2
## [1] 2
writeData(wb, sheet = 2, x = paste("Ruta", 6:10), startRow = 10, startCol = 6)
2
## [1] 2
openXL(wb) ## se abre la vesión temporal

## El argumento 'tableStyle' en writeDataTable puede ser cualquiera de los tipos de tabla predefinidos en Excel.
También puedes crear un libro de trabajo, integrar hojas de trabajo, adicionar los encabezados y pies de página; así como se muestra en el siguiente ejemplo:
## Creando un nuevo libro de trabajo
wb <- createWorkbook("Fred")

## adicionando 3 hojas de trabajo
addWorksheet(wb, "Sheet 1")
addWorksheet(wb, "Sheet 2", gridLines = FALSE)
addWorksheet(wb, "Sheet 3", tabColour = "red")
addWorksheet(wb, "Sheet 4", gridLines = FALSE, tabColour = "#4F81BD")

## Encabezados y pies de páginas
addWorksheet(wb, "Sheet 5",
header = c("ENCABEZADO IZQUIERDO", "ENCABEZADO CENTRAL", "ENCABEZADO DERECHO"),
footer = c("PIE IZQUIERDO", "PIE CENTRAL", "PIE DERECHO"),
evenHeader = c("EVEN HEAD LEFT", "EVEN HEAD CENTER", "EVEN HEAD RIGHT"),
evenFooter = c("EVEN FOOT RIGHT", "EVEN FOOT CENTER", "EVEN FOOT RIGHT"),
firstHeader = c("TOP", "OF FIRST", "PAGE"),
firstFooter = c("BOTTOM", "OF FIRST", "PAGE"))

addWorksheet(wb, "Sheet 6",
             header = c("&[Date]", "ALL HEAD CENTER 2", "&[Page] / &[Pages]"),
             footer = c("&[Path]&[File]", NA, "&[Tab]"),
             firstHeader = c(NA, "Center Header of First Page", NA),
             firstFooter = c(NA, "Center Footer of First Page", NA))

addWorksheet(wb, "Sheet 7",
             header = c("ALL HEAD LEFT 2", "ALL HEAD CENTER 2", "ALL HEAD RIGHT 2"),
             footer = c("ALL FOOT RIGHT 2", "ALL FOOT CENTER 2", "ALL FOOT RIGHT 2"))

addWorksheet(wb, "Sheet 8",
             firstHeader = c("FIRST ONLY L", NA, "FIRST ONLY R"),
             firstFooter = c("FIRST ONLY L", NA, "FIRST ONLY R"))

## Se necesitan datos en la hoja de trabajo para ver todos los encabezados y pies de página.

writeData(wb, sheet = 5, 1:500)
writeData(wb, sheet = 6, 1:500)
writeData(wb, sheet = 7, 1:500)
writeData(wb, sheet = 8, 1:500)

## y por último se salva el libro de trabajo

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

Asimismo, otra funcionalidad de openxlsx es que puedes leer datos de un archivo Excel o un objeto Workbook en un archivo de datos.

Para lo anterior se tiene los siguientes comandos:
Comandos Descripción
xlsxFile Archivo xlsx, objeto Workbook o URL en el archivo xlsx.
sheet El nombre o el índice de la hoja para leer los datos.
startRow Primera fila para comenzar a buscar datos.Las filas vacías en la parte superior de un archivo son siempre omitidas, independientemente del valor de startRow.
colNames Si es “TRUE”, la primera fila de datos se utilizará como nombres de columna.
rowNames Si es “TRUE”, la primera columna de datos se utilizará como nombres de fila.
detectDates Si es “TRUE”, intenta reconocer las fechas y realizar la conversión.
skipEmptyRows Si es “TRUE”, las filas vacías se saltarán, o bien las filas vacías después de la primera fila que contenga los datos devolverán una fila de NAs.
skipEmptyCols Si “TRUE”, se saltan las columnas vacías.
rows Vector numérico que especifica las filas del archivo de Excel para leer. Si NULL, todas se leen.
cols Vector numérico que especifica qué columnas se leen en el archivo de Excel. Si es NULL, se leen todas las columnas.
check.names Lógica. Si TRUE entonces los nombres de las variables en el marco de datos se verifican para asegurarse de que son nombres de variables válidas.
namedRegion Si no es NULL startRow, filas y cols paramters son ignorados.
na.strings Vector de caracteres de cadenas que deben interpretarse como NA. Las celdas en blanco ser devuelto NA.
fillMergedCells Si es TRUE, el valor de una celda fusionada se da a todas las celdas de la fusión.

Ejemplo:

## Lectura de archivo

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

## URL
## 
#xlsxFile <- "https://github.com/awalker89/openxlsx/raw/master/inst/readTest.xlsx"
#head(read.xlsx(xlsxFile))
Con el comando loadWorkbook se puede llamar una hoja de trabajo .xlsx la cual conserva estilos y formato del archivo original.

A continuación se muestra un ejemplo:

## llama a un libro de trabajo desde un directorio

wb <- loadWorkbook(file = system.file("loadExample.xlsx", package= "openxlsx"))

##En lista los nombres de las hojas de trabajo

names(wb)  
## [1] "IrisSample"   "testing"      "mtcars"       "mtCars Pivot"
## Ve el libro de trabajo

wb 
## A Workbook object.
##  
## Worksheets:
##  Sheet 1: "IrisSample"
##  
##  Custom row heights (row: height)
##   1: 34.5 
##  Custom column widths (column: width)
##    1: 10.86, 2: 10.43, 3: 10.86, 4: 10.43, 5: 13.14, 7: 12.43, 8: 18.43, 9: 18.00, 10: 18.14, 11: 17.71, 12: 9.715 
##  
## 
##  Sheet 2: "testing"
##  
##  Custom row heights (row: height)
##   7: 24, 8: 15.75, 20: 15.75 
##  Custom column widths (column: width)
##    9: 13.00, 10: 13.00, 11: 13.00, 12: 13.00, 13: 13.00, 14: 13.00 
##  
## 
##  Sheet 3: "mtcars"
##  
## 
##  Sheet 4: "mtCars Pivot"
##  
##  Custom column widths (column: width)
##    1: 12.43, 2: 14.29, 3: 8.860, 4: 9.145, 5: 9.145 
##  
## 
##  
##  
## Images:
##  Image 1: "C:/Users/agair/AppData/Local/Temp/RtmpW0el1N//file31f07a2e7be7_openxlsx_loadWorkbook/xl/media/image2.jpeg"
##  Image 2: "C:/Users/agair/AppData/Local/Temp/RtmpW0el1N//file31f07a2e7be7_openxlsx_loadWorkbook/xl/media/image1.jpeg"
##  
## Charts:
##  Chart 1: "C:/Users/agair/AppData/Local/Temp/RtmpW0el1N//file31f07a2e7be7_openxlsx_loadWorkbook/xl/media/image2.jpeg"
##  Chart 2: "C:/Users/agair/AppData/Local/Temp/RtmpW0el1N//file31f07a2e7be7_openxlsx_loadWorkbook/xl/media/image1.jpeg"
##  Worksheet write order: 1, 2, 3, 4
## Adiciona una nueva hoja de trabajo

addWorksheet(wb, "A new worksheet")

## salva el libro de trabajo

saveWorkbook(wb, "loadExample.xlsx", overwrite = TRUE)
Otra funcionalidad que tiene el openxlsx es que te permite escribir datos en un archivo .xlsx . Para lo cual se requieren los siguientes comandos:
Comandos Descripción
x objeto o una lista de objetos que pueden ser manejados por writeData para escribir en el archivo.
archivo nombre de archivo .xlsx
asTable escribir usando writeDataTable en lugar de writeData.
Parámetros opcionales para pasar a funciones:
1. createWorkbook
2. addWorksheet
3. writeData
4. FreezePane
5. saveWorkbook

Los parámetros opcionales son:

Parámetros para crear una hoja de trabajo:

Comandos Descripción
creator creaa una cadena que especifica el autor del libro de trabajo.

Parámetros para adicionar una hoja de trabajo:

Comandos Descripción
sheetName Nombre de la hoja de trabajo.
GridLines Una lógica. Si es FALSO, las líneas de cuadrícula de la hoja de trabajo estarán ocultas.
tabColour Color de la pestaña de la hoja de trabajo. Un color válido (perteneciente a colores ()) o un color hexadecimal válido que comienza con “#”.
zoom Un binario numérico entre 10 y 400. Nivel de zoom de la hoja de trabajo como porcentaje.

Parámetros para escribir datos / escribir una tabla de datos:

Comandos Descripción
startCol Un vector que especifica la (s) columna (s) inicial (es) para escribir df.
startRow Un vector que especifica la (s) fila (s) inicial (es) para escribir df.
xy Una alternativa para especificar startCol y startRow individualmente. Un vector de la forma c (startCol, startRow).
colNames o col.names Si es TRUE, los nombres de columna de x se escriben.
rowNames o row.names Si es TRUE, los nombres de fila de x se escriben.
headerStyle Estilo personalizado para aplicar a los nombres de columnas.
Borders “circundante”, “columnas” o “filas” o NULL. Si “circundante”, se dibuja un borde alrededor de los datos. Si “filas”, un borde circundante se dibuja un borde alrededor de cada fila. Si “columnas”, un borde circundante se dibuja con un borde entre cada columna. Si se dibujan “todos” todos los bordes de celda.
borderColour Color del borde de la celda
borderStyle estilo de línea de borde.
keepNA Si es TRUE, los valores NA se convierten a # N / A en Excel, de lo contrario, las celdas NA estarán vacías. Por defecto es FALSE.

Parámetros freezePane:

Comandos Descripción
firstActiveRow Fila superior de región activa para congelar el panel.
firstActiveCol La columna izquierda más lejana de la región activa para congelar el panel.
firstRow Si es TRUE, congela la primera fila (equivalente a firstActiveRow = 2).
firstCol Si es TRUE, congela la primera columna (equivalente a firstActiveCol = 2).

Parámetros de colWidths

Comandos Descripción
colWidths Debe ser “auto” de valor. Establece todas las columnas que contienen datos en ancho automático.

Parámetros saveWorkbook

Comandos Descripción
overwrite Sobrescribir archivo existente (Predeterminado a TRUE como con write.table).

Nota: Las columnas de x con clase Fecha o POSIXt se diseñan automáticamente como fechas y tiempos de datos, respectivamente.

## escribiendo en el directorio

options("openxlsx.borderColour" = "#4F80BD") ## set default border colour
write.xlsx(iris, file = "writeXLSX1.xlsx", colNames = TRUE, borders = "columns")
write.xlsx(iris, file = "writeXLSX2.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)

## Los elementos de las listas se escriben en hojas de trabajo individuales, usando nombres de listas como nombres de hojas si están disponibles

l <- list("IRIS" = iris, "MTCATS" = mtcars, matrix(runif(1000), ncol = 5))
write.xlsx(l, "writeList1.xlsx", colWidths = c(NA, "auto", "auto"))

## A cada hojas se les pueden dar diferentes parámetros.

write.xlsx(l, "writeList2.xlsx", startCol = c(1,2,3), startRow = 2,
           asTable = c(TRUE, TRUE, FALSE), withFilter = c(TRUE, FALSE, FALSE))

Con el openxlsx también se puede llamar y eliminar una tabla de Excel en un libro de trabajo.

Comandos Descripción
wb Un objeto de libro de trabajo.
sheet Un nombre o índice de una hoja de cálculo.
table Nombre de la tabla para eliminar.
wb <- createWorkbook()
addWorksheet(wb, sheetName = "Sheet 1")
addWorksheet(wb, sheetName = "Sheet 2")
writeDataTable(wb, sheet = "Sheet 1", x = iris, tableName = "iris")
writeDataTable(wb, sheet = 1, x = mtcars, tableName = "mtcars", startCol = 10)


removeWorksheet(wb, sheet = 1) ## delete worksheet removes table objects

writeDataTable(wb, sheet = 1, x = iris, tableName = "iris")
writeDataTable(wb, sheet = 1, x = mtcars, tableName = "mtcars", startCol = 10)

## removeTable() deletes table object and all data
getTables(wb, sheet = 1)
## [1] "iris"   "mtcars"
## attr(,"refs")
## [1] "A1:E151" "J1:T33"
removeTable(wb = wb, sheet = 1, table = "iris")
writeDataTable(wb, sheet = 1, x = iris, tableName = "iris", startCol = 1)

getTables(wb, sheet = 1)
## [1] "mtcars" "iris"  
## attr(,"refs")
## [1] "J1:T33"  "A1:E151"
removeTable(wb = wb, sheet = 1, table = "iris")
writeDataTable(wb, sheet = 1, x = iris, tableName = "iris", startCol = 1)

saveWorkbook(wb = wb, file = "removeTableExample.xlsx", overwrite = TRUE)

Con los comandos Get o set working Directory

getwd evuelve un archivo de ruta absoluto que representa el directorio de trabajo actual del proceso R; setwd (dir) se usa para establecer el directorio de trabajo en dir.

getwd devuelve una cadena de caracteres o NULL si el directorio de trabajo no está disponible. En Windows, la ruta devuelta usará / como el separador de ruta y se codificará en UTF-8. La ruta no tendrá un final / a menos que sea el directorio raíz (de una unidad o compartir en Windows).

setwd devuelve el directorio actual antes del cambio, de manera invisible y con las mismas convenciones que getwd. Se producirá un error si no tiene éxito (incluso si no está implementado).

Por Ejemplo:

(WD <- getwd())
## [1] "E:/MA_UNAM/MATERIA1_R"
if (!is.null(WD)) setwd(WD)

Con el siguiente ejemplo se obtiene el acceso a un archivo .xlsx, al cual se le hace el análisis y gráficado que se requiere para representar los datos.

library(openxlsx)

setwd("C:\\Users\\agair\\OneDrive\\ARCHEXCEL")

INTERNETH<- read.xlsx("HI.xlsx", sheet = 2)
attach(INTERNETH)
View(INTERNETH)
mean(HOGARI)
## [1] 117.2995
median(HOGARI)
## [1] 89
sd(HOGARI)
## [1] 195.9891
summary(HOGARI)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    23.0    39.0    89.0   117.3   102.0  1515.0

Including Plots

Los datos se comportan de la siguiente manera:

Bibliográfia:

Importing Data with RStudio Autor: Javier Luraschi Enero 11, 2017 URL: https://support.rstudio.com/hc/en-us/articles/218611977-Importing-Data-with-RStudio

Quick list of useful R packages Autor: Garrett Grolemund Enero 12, 2017 URL: https://support.rstudio.com/hc/en-us/articles/201057987-Quick-list-of-useful-R-packages

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.