Integración con Microsoft Excel

Los paquetes más usados son “xlsx”, “RExcel” y “XLConnect”.

Con la libreria “xlsx” podemos por ejemplo guardar un data frame en excel con la siguiente función:

# write.xlsx(auto, file"../Carpeta/NombreDeFichero.xlsx", 
#            sheetName = "Nombre del fichero", row.names = F)

Podemos crear un workbook de excel:

# df.workbook <- createWorkbook()
# sheet1 <- createSheet(df.workbook, "auto1") # creación de la primera pagina de un excel
# rows <- createRow(sheet1, rowIndex = 1) # identificar y añadir filas 
# cell.1 <- createCell(row, colIndex = 1)[[1,1]] # seleccionar i crear una celda en la posición indicada
# setCellValue(cell.1, "Te doy un valor") # dar un valor en una celda determinada
# addDataFrame(auto, sheet1, startRow = 3, row.names = F)

Modificar el formato de una celda:

# cs <- CellStyle(auto.workbook) +
#   Font(auto.workbook, isBold= T, color = "red") # definimos un formato
# setCellStyle(cell.1,cs) # aplicamos el formato a la celda seleccionada
# 
# saveWorkbook(auto.workbook, "../Carpeta/NombreDeFichero.xlsx")

Cargamos un fichero de excel:

# wb <- loadWorkbook("../Carpeta/NombreDeFichero.xlsx")
# sheets <- getSheets(workbook) # obtener paginas del workbook
# sheet <- sheets[[1]]
# addDataFrame(auto[,10:11], sheet, startColumn = 10, startRow = 3, row.names = F) # añadimos información adicional al fichero de excel

Usar la funcion de read.xlsx para indicar que hoja queremos leer por el nombre o el numero de la sheet. Incluso especificar si se quiere leer unas determinadas columnas o filas.

# new.auto <- read.xlsx("../Carpeta/NombreDeFichero.xlsx", sheetIndex = 1) # si queremos bucar por la hoja numero 1
# new.auto <- read.xlsx("../Carpeta/NombreDeFichero.xlsx",
#                       sheetName = "auto1", # buscar una hoja por su nombre
#                       rowIndex = 3:10, colIndex = 1:9) # seleccionar determinadas filas y columnas

MySQL y bases de datos relacionales

Diferentes formas de conectarte. Se necesita un soquet de conexión, un pequeño programa que permite conectar R a MySQL. Las librerias que usaremos:

library(RODBC)

Esta libreria nos permite conectarnos a casi qualquier datos de una base relacional utilizando la interface o el soquet ODBC (Open Data Base Conectivity).

La libreria RJBDC tambien nos ayudara a conectarnos, la J es de Java, por lo tanto necesitaremos tener configurado el pluggin de Java para RStudio.

# library(RJDBC)

Con las siguientes librerias en principio podriamos acceder al 99% de las bases de datos de mundo:

# library(ROracle)
# library(RMySQL)

Instalando MySQL y MySQL Workbench

Para trabajar directamente desde R con MySQL necesitamos descargar MySQL desde la web oficial.

Ejemplo de como conectarnos a una base de datos:

# library(RODBC)
# # Ahora debemos establecer la conexión
# con <- odbcConnect(dsn = "MySQL",# Estabecemos las fuentes de datos de donde sacar la info)
#                    uid = "user", # usuario y password para accedet a la BD
#                    pwd = "password")
# odbcDataSources() # nos 

¿Cómo hacer una consulta? Ejemplo:

# custData <- sqlQuery(con, "select * from NombreBaseDatos.Columna_1 limit 5;") # añadimos la orden con enguaje SQL

¿Cómo guardar datos en la Base de Datos? Ejemplo:

# sqlSave(con, # conexion a la base de datos
#         nuevo_data_frame, #  nueva información que se quiere subir
#         "NombreBaseDatos.NombreNuevaTabla",
#         append = F) # append = true añade al final de la tabla y igual a false reescrive toda la información de la tabla

Libreria RMySQL

Explicación como usar esta libreria:

# library(RMySQL)
# 
# con <- dfConnect(MySQL(), # establecemos conexión Base de datos
#                  dfname = "NombreBaseDatos",
#                  host = "123.3.2.1", # URL, tanto si es local como si es externa
#                  port = 3306, # puerto donde se haya creado la Base  de datos
#                  username = "jb",
#                  password = "1234"
#                  )

Función para leer la tabla de la base de datos

# dbReadTable(con, "NombreTablaDentroBaseDatos")

Realizar una consulta

# dbGetQuery(con, "select * from NombreTabla where title like '%name%")

# dbSendQuery(con, "select * from * [...]")

Limpiar los resultados y desconectar la conexión una vez finalizado trabajar con la base de datos:

# dbClearResult("NombreObjetoAEliminar")
# dbDisconnect(con)

Función de dbListConnections(dbDriver(“MySQL”)) para saber cuantas conexiones externas tenemos ahora mismo.

# dbListConnections(dbDriver("MySQL"))

Se puede usar la función paste() para hacer más entendible las consultas:

# dbSendQuery(con, paste("SELECT column1, max(column2)",
#                        "FROM table",
#                        "GROUP BY clumn1",
#                        "ORDER BY max(column2) DESC"))