# Habilitamos las librerías que utilizaremos
library(DBI)
library(RMySQL)
# Establecemos la conexión
db <- dbConnect(RMySQL::MySQL(),
user = "tu_nombre_usuario",
password = "tu_contraseña",
host = "tu_host",
port = 3306,
dbname = "nombre_de_tu_base_de_datos"
)
# Ejecutamos una consulta de ejemplo
resultado <- dbGetQuery(db, "SELECT * FROM tu_tabla LIMIT 5")
# Cerramos la conexión cuando hayas terminado
dbDisconnect(db)La gobernanza del dato
Gestión del dato
En cualquier estudio de investigación o innovación la calidad de la información que se obtiene es de vital importancia, así como las herramientas que se utilizan para guardar dicha información debido principalmente a su seguridad.
Por definición, una base de datos es:
Por lo general, podemos definir las bases de datos actuales en dos categorías:
- Bases de datos SQL: Organizan la información en tablas.
Actualmente, la base de datos mas popular para ello es MySQL. Para poder conectar y gestionar la información tanto R como Python disponen de formas sencillas de integrarse. A continuación te presentamos un ejemplo de ello:
También podemos hacer uso de bases SQL de forma local con SQLite. A continuación te presentamos un ejemplo:
# Habilitamos las librerías que utilizaremos
library(DBI)
library(RSQLite)
# Conectamos la base de datos
db <- dbConnect(RSQLite::SQLite(), "biblioteca.sqlite")
# Creamos una tabla
dbExecute(db, "
CREATE TABLE IF NOT EXISTS libros (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
autor TEXT NOT NULL,
anio INTEGER
)
")
# Insertamos datos
libros <- data.frame(
titulo = c("El Quijote", "Cien años de soledad", "1984"),
autor = c("Miguel de Cervantes", "Gabriel García Márquez", "George Orwell"),
anio = c(1605, 1967, 1949)
)
dbWriteTable(db, "libros", libros, append = TRUE)
# Cerramos la conexión
dbDisconnect(db)- Bases de datos No solo SQL: Organizan la información de forma dinámica.
Actualmente, una de las bases de datos no solo SQL mas populares es MongoDB. Esta se utiliza cuando la información no puede ser estructurada en tablas. Por supuesto, ambos lenguajes son capaces de conectarse y utilizar estas bases de datos. Aquí tienes un ejemplo:
# Habilitamos la librería que utilizaremos
library(mongolite)
# Conectamos con a MongoDB
conexion <- mongo(collection = "usuarios", db = "mi_base_de_datos", url = "mongodb://localhost:27017")
# Insertamos un documento
nuevo_usuario <- list(
nombre = "Ana",
edad = 28,
email = "ana@ejemplo.com"
)
conexion$insert(nuevo_usuario)
# Cerramos la conexión
rm(conexion)La obtención de la información
Por supuesto, antes de gestionar la información debemos obtenerla. Normalmente lo solemos realizar a través de Cuadernos de Recogida de Datos a papel que luego son mecanizados a ordenador (en un excel por ejemplo). Nuestros lenguajes de programación nos permiten realizar Programas informáticos de recogida de datos. Formularios a medida con todo aquello que necesitamos.
Como ejemplo os presentamos el framework shiny, disponible en R y Python, para la creación rápida de programas informáticos. A continuación disponéis de un ejemplo:
#| '!! shinylive warning !!': |
#| shinylive does not work in self-contained HTML documents.
#| Please set `embed-resources: false` in your metadata.
#| standalone: true
#| viewerHeight: 800
library(shiny);library(bslib)
ui <- fluidPage(theme = bs_theme(preset = "shiny"),
titlePanel("Formulario de contacto"),
sidebarLayout(
sidebarPanel(
numericInput("edad","¿Que edad tiene?", value = NULL, min = 0, max = 99),
sliderInput("altura","¿Cuanto mide?", min = 130, max = 250, value = 200),
radioButtons("comida","¿Le gusta la comida china?", choices = c("Sí","No"), inline = T),
conditionalPanel(
condition = "input.comida == 'Sí'",
selectInput("tipo","¿Que plato le gusta?", choices = list("Arroz tres delicias","Pato a lo cantonés"))
),
actionButton("guardar","Guardar mis datos")
),
mainPanel(
wellPanel(
tags$h3("Sus datos"),
tags$hr(),
textOutput("edadMostrada"),
textOutput("alturaMostrada"),
textOutput("chinaMostrada"),
conditionalPanel(
condition = "input.comida == 'Sí'",
textOutput("comidaMostrada")
)
)
)
)
)
server <- function(input, output) {
observeEvent(input$guardar,{
output$edadMostrada <- renderText({
paste("Su edad es:", input$edad)
})
output$alturaMostrada <- renderText({
paste("Su altura es:", input$altura)
})
output$chinaMostrada <- renderText({
paste(input$comida,"le gusta la comida china")
})
output$comidaMostrada <- renderText({
paste("A usted le gusta el:", input$tipo)
})
})
}
shinyApp(ui = ui, server = server)