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