Acerca de… cargar datos en R

Hola.

Una explicación sobre como cargar datos en R a partir de hojas de cálculo. Hay más formas, pero yo suelo usar esta.

He creado en calc una hoja de cálculo con 5 columnas llamada dades.ods, tiene dos columnas llamadas factor1 y factor2 y tres columnas con los datos.

pantalazo dades.ods

Leamos esto con el R:

Se puede leer directamente de .ods o .xls usando read.dbf, pero Nunca sabemos de donde van a venir los datos así que lo explico para leerlos desde un archivo de texto .csv que se puede crear desde cualquier plataforma, o casi.

Pasamos dades.ods a .csv mediante Guardar como (también se puede hacer con MSExcel)

Antes de leerlo con R miradlo con un editor de texto para ver que la separación por campos está bien hecha, el texto está entre comillas, los decimales con puntos, etc. Si no hacemos bien esto último y los decimales son comas, el R pensará que ahí hay un cambio de campo y nos haremos un lío.

Una vez comprobado esto leemos el archivo dades.csv desde R:

dades->read.table("dades.csv",sep=",",header=T)

le decimos que bajo el nombre dades nos ponga el contenido de dades.csv, que los campos estan separados por comas (sep=»,») y que nuestro archivo tenía cabeceras (header=T). Al crear el .csv podemos especificar esto.

Como veis no he especificado ruta, supongo que dades.csv está en el directorio de trabajo.

Para ver el contenido:

> summary(dades)
 factor1    factor2         datos1          datos2           datos3
 a:20    Min.   :1.00   Min.   : 0.32   Min.   : 12.17   Min.   : 1.00
 b:20    1st Qu.:1.75   1st Qu.:25.35   1st Qu.:263.51   1st Qu.:10.75
         Median :2.50   Median :54.05   Median :476.13   Median :30.00
         Mean   :2.50   Mean   :51.88   Mean   :501.87   Mean   :30.00
         3rd Qu.:3.25   3rd Qu.:76.39   3rd Qu.:725.57   3rd Qu.:49.25
         Max.   :4.00   Max.   :99.96   Max.   :996.24   Max.   :59.00

o

> str(dades)
'data.frame':   40 obs. of  5 variables:
 $ factor1: Factor w/ 2 levels "a","b": 1 1 1 1 1 1 1 1 1 1 ...
 $ factor2: int  1 1 1 1 1 2 2 2 2 2 ...
 $ datos1 : num  62.04 0.82 73.25 60.96 52.31 ...
 $ datos2 : num  504 996 725 259 338 ...
 $ datos3 : int  1 2 3 4 5 6 7 8 9 10 ...

Nos ha creado un dataframe llamado dades.

Ahora hay que decirle qué columnas son factores y cuáles son datos, ya que los que eran texto (factor1) sí que los ha reconocido como factores, pero los que eran números (factor2) nos los ha reconocido como número y en el summary nos ha hecho la estadística.

dades$factor2<-as.factor(dades$factor2)

Le decimos que cree un factor nuevo llamado dades$factor2 que será el mismo dades$factor2 pero convertido en factor.

Si hacemos ahora el summary:

> summary(dades)
 factor1 factor2     datos1          datos2           datos3
 a:20    1:10    Min.   : 0.32   Min.   : 12.17   Min.   : 1.00
 b:20    2:10    1st Qu.:25.35   1st Qu.:263.51   1st Qu.:10.75
         3:10    Median :54.05   Median :476.13   Median :30.00
         4:10    Mean   :51.88   Mean   :501.87   Mean   :30.00
                 3rd Qu.:76.39   3rd Qu.:725.57   3rd Qu.:49.25
                 Max.   :99.96   Max.   :996.24   Max.   :59.00

tenemos tres variables datos 1-3 y dos factores: factor1 con dos niveles a y b y factor2 con 4 niveles 1, 2, 3, 4.

Saludos.

10 pensamientos en “Acerca de… cargar datos en R

    • Hola cali.

      Si la base de datos esta incompleta (entiendo que te refieres a que para algún caso no conocemos el valor de la variable) debemos sustituir en la hoja de calculo nuestro valor para los datos faltantes por NA. De este modo, al importar los datos R entenderá que es un valor faltante.
      Después, al hacer el summary, nos indicará el número de NA que hay en esa categoría.
      Espero haberte ayudado, si no es así no dudes en volver a comentar.

      Saludos.

  1. En el caso en que los decimales de los números esten separados por coma (ej: 666,66) y no por puntos (ej: 999.99), se puede introducir dec=»,» este hará que reconozca las comas.
    Quedaría de la siguiente forma, para el mismo ejemplo:

    dades->read.table(«dades.csv»,sep=»,»,header=T, dec =»,»)

  2. Para unir dos tablas en SAS el código es el siguiente:
    data tabla_union;
    set tabla1 tabla2;
    run;
    Más info:
    http//sasybi.blogspot.com

  3. Saludos

    Corrijanme si me equivoco, pero la flecha de asignación no esta al revés?

    dades->read.table(“dades.csv”,sep=”,”,header=T, dec =”,”)

    deberia ser:

    dades <- read.table(“dades.csv”,sep=”,”,header=T, dec =”,”)

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s