Saltar al contenido principal
LibreTexts Español

10.1: R y bases de datos

  • Page ID
    149931
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Hay muchas interfaces que conectan R con diferentes software de administración de bases de datos e incluso hay paquete sqldf que permite trabajar con R marcos de datos a través de comandos del lenguaje SQL. Sin embargo, el núcleo R también puede funcionar de manera similar a una base de datos, incluso sin una extensión seria. La Tabla\(\PageIndex{1}\) muestra la correspondencia entre los operadores SQL y los comandos de R.

    SELECCIONAR [, subconjunto ()
    UNIRSE merge ()
    AGRUPAR POR agregado (), tapply ()
    DISTINTO único (), duplicado ()
    ORDENAR POR orden (), sort (), rev ()
    DONDE cual (), %en%, ==
    COMO grep ()
    INSERTAR rbind ()
    EXCEPTO ! y -

    Tabla Correspondencia\(\PageIndex{1}\) aproximada entre operadores SQL y funciones R.

    Una de las desventajas más significativas es que muchos de estos comandos R (como merge ()) son lentos. A continuación se muestran ejemplos de las funciones de usuario que funcionan mucho más rápido:

    Código\(\PageIndex{1}\) (R):

    Recode <- function(var, from, to) {
    x <- as.vector(var)
    x.tmp <- x
    for (i in 1:length(from)) {x <- replace(x, x.tmp == from[i], to[i])}
    if(is.factor(var)) factor(x) else x}

    Ahora podemos operar con múltiples marcos de datos como con uno. Esto es importante si los datos están organizados jerárquicamente. Por ejemplo, si estamos midiendo plantas en diferentes regiones, podríamos querer tener dos tablas: la primera con datos regionales y la segunda con resultados de mediciones. Para conectar estas dos tablas, necesitamos una clave, la misma columna que presenta en ambas tablas:

    Código\(\PageIndex{2}\) (R):

    locations <- read.table("http://ashipunov.info/shipunov/open/eq_l.txt", h=TRUE, sep=";")
    measurements <- read.table( "http://ashipunov.info/shipunov/open/eq_s.txt", h=TRUE, sep=";")
    head(locations)
    head(measurements)
    loc.N.POP <- Recode(measurements$N.POP, locations$N.POP,as.character(locations$SPECIES))
    head(cbind(species=loc.N.POP, measurements))

    Aquí se mostró cómo trabajar con dos tablas relacionadas y el comando Recode (). La primera tabla contiene ubicaciones, la segunda—medidas. Los nombres de las especies solo están en la primera tabla. Si queremos conocer la correspondencia entre especies y caracteres, podríamos querer fusionar estas tablas. La clave es la columna N.POP (ID de ubicación).

    La colección recode.r de funciones R distribuidas con este libro contiene la función Recode () lista para usar y herramientas útiles relacionadas.

    Hay otra característica relacionada con la creación de bases de datos: con bastante frecuencia, existe la necesidad de convertir “texto en columnas”. Esto es especialmente importante cuando los datos contienen fragmentos de texto en lugar de palabras simples:

    Código\(\PageIndex{3}\) (R):

    m <- c("Plantago major", "Plantago lanceolata", "Littorella uniflora")
    do.call(rbind, strsplit(m, split=" ")) # one space inside quotes

    (La llamada a la función vectorizada do.call () construye una función llama a sus argumentos.)

    También existe la operación de codificación de datos que convierte los datos categóricos en forma binaria (0/1). Varias formas son posibles:

    Código\(\PageIndex{4}\) (R):

    m <- c("L", "S", "XL", "XXL", "S", "M", "L") 
    m.f <- factor(m)
    m.o <- ordered(m.f, levels=c("S", "M", "L", "XL", "XXL"))
    m.o
    model.matrix( ~ m.o - 1, data=data.frame(m.o))
    Tobin(m.o, convert.names=FALSE) # asmisc.r

    R y TeX son software amigable por lo que es posible que funcionen juntos para automatizar el procesamiento de libros. Dichos libros serán “semiestáticos” donde los datos iniciales provienen de la base de datos actualizada regularmente, y luego los scripts R y TeX trabajan para crear documentos tipográficamente complicados.

    Los manuales y listas de verificación de flora y fauna son candidatos perfectos para estos manuales semiestáticos. Este libro complementa contiene la carpeta archivada manual.zip que ilustra cómo funciona este enfoque sobre ejemplo de “kubricks” imaginarios (ver arriba).


    This page titled 10.1: R y bases de datos is shared under a Public Domain license and was authored, remixed, and/or curated by Alexey Shipunov via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.