Skip to content

Latest commit

 

History

History
335 lines (279 loc) · 14.6 KB

File metadata and controls

335 lines (279 loc) · 14.6 KB

Importación de datos

Macarena Valenzuela Beltrán 20 de julio

El presente md se basa en el texto de AnalizaR Datos Políticos de Francisco Urdinez y Andrés Cruz (2019).

Urdinez y Cruz (2019) sostiene que la carga de base de datos en R no es una tarea fácil. Esto es así, porque las bases de datos siempre presentan distintos formatos de archivo que optimizan los diferentes parámetros.

Para poder hacer un ejercicio de descarga vamos a utilizar las bases de datos de los mismos ejemplos ocupados en el libro AnalizaR Datos Políticos.

Para ello, vamos a crear un nuevo proyecto en RStudio que lo guardaremos en nuestro computador. Luego, dentro de la carpeta del proyecto crearemos una carpeta llamada “Datos”. En este caso, las fotos mostradas para este ejemplo y los ejemplos posteriores, es la carpeta de nuestro Taller de Investigación 2020 y dentro de ella creamos la carpeta llamada “Datos”.

knitr::include_graphics("Imágenes/carga_datos.png")

Una vez que creamos la carpeta, podemos guardar nuestra base de datos en esta carpeta “Datos” incorporada en el proyecto de R local. Para trabajar este ejercicio de importación, descargaremos la base de datos del libro AnalizaR Datos Políticos llamada “carga-base” del capítulo 5. Luego, la guardamos en la carpeta “Datos” de nuestro proyecto de R local. Esto se debería observar de la siguiente manera:

knitr::include_graphics("Imágenes/carga_datos.png")

Una vez guardado el zip (o archivos comprimidos) en la carpeta “Datos” de nuestro proyecto R local, descomprimimos los archivos con el botón derecho y debiera aparecer una carpeta llamado “datos” (con minúscula y nombrada por el creador de la base de datos). Dentro de la carpeta “datos”, se encuentra el proyecto Desiguales del PNUD. En el libro de Urdinez y Cruz (2019), se utiliza una pequeña subsección de esta base de datos. En ella, se encuentran 300 encuestados y encuestadas a lo largo de 20 variables. La carpeta presenta seis formatos distintos con los cuales vamos a trabajar para ensayar a importar datos.

A continuación, verás imágenes de como se ven los distintos tipos de ficheros que se encuentran dentro de la carpeta “datos” de nuestro proyecto de R local.

knitr::include_graphics("Imágenes/distintos_ficheros.png")

Importación de datos

Para importar los datos ocuparemos el paquete readr que se encuentra ubicado dentro del super paquete tidyverse. Por lo tanto, el primer paso es llamar a a la librería tal como lo hemos aprendido en clases.

library(tidyverse)
## -- Attaching packages -------------------------------------- tidyverse 1.3.0 --

## v ggplot2 3.3.2     v purrr   0.3.4
## v tibble  3.0.2     v dplyr   1.0.0
## v tidyr   1.0.0     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.5.0

## -- Conflicts ----------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

Tal como lo hemos explicado en variadas ocasiones en clases, tidyverse contiene el paquete readr para importación de datos. Por lo tanto, ya estamos listos para comenzar a trabajar. Para cargar el fichero de datos con formato .csv vamos a ocupar el comando “read_csv()” de readr y vamos a crear un objeto que denominaremos df_desiguales_csv con el siguiente comando:

df_desiguales_csv <- read_csv("datos/desiguales.csv")
## Parsed with column specification:
## cols(
##   .default = col_double()
## )

## See spec(...) for full column specifications.

El nombre del objeto significa dataframe_desiguales_en foramto csv. Para confirmar que el archivo se encuentra en nuestro ambiente de trabajo R, ejecutamos el siguiente comando:

ls()
## [1] "df_desiguales_csv"

Este comando te señala en la consola el objeto creado y en el Global Enviroment, (pestaña Enviroment, ubicado en el cuadrante superior derecho) aparecerá el dataframe señalando las 300 observacioens de 20 variables.

knitr::include_graphics("Imágenes/Environment.png")

Una vez confirmada, la importación de los datos necesitamos saber si es o no un objeto tipo dataframe. Para ello, utilizaremos el siguiente comando:

class(df_desiguales_csv)
## [1] "spec_tbl_df" "tbl_df"      "tbl"         "data.frame"

Este comando, nos arroja en la consola que es un archivo de tipo dataframe y tibble (Recordemos que tibble es un formato mejorado de dataframe propio de R).

Ahora bien, para ver una breve panorámica de nuestra base de datos vamos a ocupar las funciones del paquete dplyr::select() y la función dplyr::glimpse(), Así como vamos a observar nuestra base de datos con otras funciones como head(), str(), summmary().

Para ver una descripción de las variables

glimpse(df_desiguales_csv)
## Rows: 300
## Columns: 20
## $ id        <dbl> 34, 36, 70, 75, 99, 121, 122, 128, 160, 163, 166, 172, 17...
## $ sexo      <dbl> 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, ...
## $ zona      <dbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, ...
## $ macrozona <dbl> 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, ...
## $ region    <dbl> 13, 13, 7, 7, 13, 7, 7, 13, 7, 7, 7, 5, 7, 13, 13, 13, 13...
## $ edad      <dbl> 63, 52, 73, 78, 22, 51, 18, 21, 57, 41, 55, 64, 26, 70, 2...
## $ p1_anyo   <dbl> 1952, 1963, 1943, 1938, 1993, 1964, 1997, 1995, 1958, 197...
## $ p1_mes    <dbl> 8, 7, 2, 2, 12, 11, 10, 1, 12, 4, 10, 12, 12, 10, 10, 11,...
## $ p2        <dbl> 1, 1, 4, 7, 8, 1, 5, 5, 3, 3, 7, 4, 5, 1, 5, 1, 1, 5, 1, ...
## $ p3        <dbl> 2, 3, 2, 3, 3, 2, 3, 3, 2, 2, 3, 1, 1, 1, 3, 1, 2, 3, 1, ...
## $ p4        <dbl> 1, NA, 1, NA, NA, 1, NA, NA, 1, 2, NA, 1, 2, 1, NA, 2, 1,...
## $ p5        <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, 2, NA, NA, 1, NA, NA,...
## $ p6        <dbl> 5, 5, 5, 6, 10, 10, 8, 10, 6, 8, 7, 10, 9, 10, 9, 5, 6, 8...
## $ p7        <dbl> 10, 5, 5, 6, 9, 8, 10, 10, 8, 8, 8, 10, 9, 10, 8, 3, 5, 7...
## $ p8        <dbl> 10, 10, 9, 7, 9, 8, 4, 8, 7, 7, 7, 5, 5, 10, 4, 10, 10, 8...
## $ p9_1      <dbl> 10, 8, 10, 7, 8, 9, 7, 6, 8, 7, 7, 5, 10, 9, 6, 10, 7, 9,...
## $ p9_2      <dbl> 7, 10, 9, 7, 9, 10, 10, 7, 8, 7, 6, 5, 9, 8, 5, 10, 10, 9...
## $ p9_3      <dbl> 9, 10, 7, 6, 9, 9, 5, 7, 7, 7, 7, 5, 9, 8, 3, 10, 10, 8, ...
## $ p9_4      <dbl> 5, 8, 8, 6, 9, 10, 8, 7, 7, 7, 7, 3, 9, 8, 5, 10, 7, 8, 1...
## $ p9_5      <dbl> 8, 8, 9, 7, 10, 9, 8, 6, 8, 8, 8, 10, 9, 7, 7, 10, 10, 10...

Para ver las 10 primeras variables

df_desiguales_csv %>% select(1:10) %>% glimpse()
## Rows: 300
## Columns: 10
## $ id        <dbl> 34, 36, 70, 75, 99, 121, 122, 128, 160, 163, 166, 172, 17...
## $ sexo      <dbl> 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, ...
## $ zona      <dbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, ...
## $ macrozona <dbl> 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, ...
## $ region    <dbl> 13, 13, 7, 7, 13, 7, 7, 13, 7, 7, 7, 5, 7, 13, 13, 13, 13...
## $ edad      <dbl> 63, 52, 73, 78, 22, 51, 18, 21, 57, 41, 55, 64, 26, 70, 2...
## $ p1_anyo   <dbl> 1952, 1963, 1943, 1938, 1993, 1964, 1997, 1995, 1958, 197...
## $ p1_mes    <dbl> 8, 7, 2, 2, 12, 11, 10, 1, 12, 4, 10, 12, 12, 10, 10, 11,...
## $ p2        <dbl> 1, 1, 4, 7, 8, 1, 5, 5, 3, 3, 7, 4, 5, 1, 5, 1, 1, 5, 1, ...
## $ p3        <dbl> 2, 3, 2, 3, 3, 2, 3, 3, 2, 2, 3, 1, 1, 1, 3, 1, 2, 3, 1, ...

Para ver las 6 primeras filas

head(df_desiguales_csv)
## # A tibble: 6 x 20
##      id  sexo  zona macrozona region  edad p1_anyo p1_mes    p2    p3    p4
##   <dbl> <dbl> <dbl>     <dbl>  <dbl> <dbl>   <dbl>  <dbl> <dbl> <dbl> <dbl>
## 1    34     1     2         4     13    63    1952      8     1     2     1
## 2    36     1     2         4     13    52    1963      7     1     3    NA
## 3    70     1     2         2      7    73    1943      2     4     2     1
## 4    75     2     2         2      7    78    1938      2     7     3    NA
## 5    99     2     2         4     13    22    1993     12     8     3    NA
## 6   121     2     2         2      7    51    1964     11     1     2     1
## # ... with 9 more variables: p5 <dbl>, p6 <dbl>, p7 <dbl>, p8 <dbl>,
## #   p9_1 <dbl>, p9_2 <dbl>, p9_3 <dbl>, p9_4 <dbl>, p9_5 <dbl>

Para ver las últimas 6 filas

tail(df_desiguales_csv)
## # A tibble: 6 x 20
##      id  sexo  zona macrozona region  edad p1_anyo p1_mes    p2    p3    p4
##   <dbl> <dbl> <dbl>     <dbl>  <dbl> <dbl>   <dbl>  <dbl> <dbl> <dbl> <dbl>
## 1  2779     1     2         4     13    48    1967     11     1     3    NA
## 2  2790     1     2         4     13    22    1994      2     5     3    NA
## 3  2801     1     2         1      4    24    1992      2     5     3    NA
## 4  2805     1     2         4     13    72    1944      4     1     1     1
## 5  2806     1     2         4     13    38    1977     10     5     3    NA
## 6  2809     1     2         4     13    51    1964     11     4     2     1
## # ... with 9 more variables: p5 <dbl>, p6 <dbl>, p7 <dbl>, p8 <dbl>,
## #   p9_1 <dbl>, p9_2 <dbl>, p9_3 <dbl>, p9_4 <dbl>, p9_5 <dbl>

Para saber la estructura de las variables

str(df_desiguales_csv)
## tibble [300 x 20] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ id       : num [1:300] 34 36 70 75 99 121 122 128 160 163 ...
##  $ sexo     : num [1:300] 1 1 1 2 2 2 2 2 1 1 ...
##  $ zona     : num [1:300] 2 2 2 2 2 2 2 2 2 2 ...
##  $ macrozona: num [1:300] 4 4 2 2 4 2 2 4 2 2 ...
##  $ region   : num [1:300] 13 13 7 7 13 7 7 13 7 7 ...
##  $ edad     : num [1:300] 63 52 73 78 22 51 18 21 57 41 ...
##  $ p1_anyo  : num [1:300] 1952 1963 1943 1938 1993 ...
##  $ p1_mes   : num [1:300] 8 7 2 2 12 11 10 1 12 4 ...
##  $ p2       : num [1:300] 1 1 4 7 8 1 5 5 3 3 ...
##  $ p3       : num [1:300] 2 3 2 3 3 2 3 3 2 2 ...
##  $ p4       : num [1:300] 1 NA 1 NA NA 1 NA NA 1 2 ...
##  $ p5       : num [1:300] NA NA NA NA NA NA NA NA NA 2 ...
##  $ p6       : num [1:300] 5 5 5 6 10 10 8 10 6 8 ...
##  $ p7       : num [1:300] 10 5 5 6 9 8 10 10 8 8 ...
##  $ p8       : num [1:300] 10 10 9 7 9 8 4 8 7 7 ...
##  $ p9_1     : num [1:300] 10 8 10 7 8 9 7 6 8 7 ...
##  $ p9_2     : num [1:300] 7 10 9 7 9 10 10 7 8 7 ...
##  $ p9_3     : num [1:300] 9 10 7 6 9 9 5 7 7 7 ...
##  $ p9_4     : num [1:300] 5 8 8 6 9 10 8 7 7 7 ...
##  $ p9_5     : num [1:300] 8 8 9 7 10 9 8 6 8 8 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   id = col_double(),
##   ..   sexo = col_double(),
##   ..   zona = col_double(),
##   ..   macrozona = col_double(),
##   ..   region = col_double(),
##   ..   edad = col_double(),
##   ..   p1_anyo = col_double(),
##   ..   p1_mes = col_double(),
##   ..   p2 = col_double(),
##   ..   p3 = col_double(),
##   ..   p4 = col_double(),
##   ..   p5 = col_double(),
##   ..   p6 = col_double(),
##   ..   p7 = col_double(),
##   ..   p8 = col_double(),
##   ..   p9_1 = col_double(),
##   ..   p9_2 = col_double(),
##   ..   p9_3 = col_double(),
##   ..   p9_4 = col_double(),
##   ..   p9_5 = col_double()
##   .. )

Para ver un resumen estadístico

summary(df_desiguales_csv)
##        id              sexo           zona         macrozona    
##  Min.   :  34.0   Min.   :1.00   Min.   :1.000   Min.   :1.000  
##  1st Qu.: 704.2   1st Qu.:1.00   1st Qu.:2.000   1st Qu.:2.000  
##  Median :1320.5   Median :2.00   Median :2.000   Median :3.000  
##  Mean   :1380.4   Mean   :1.61   Mean   :1.847   Mean   :2.993  
##  3rd Qu.:2031.2   3rd Qu.:2.00   3rd Qu.:2.000   3rd Qu.:4.000  
##  Max.   :2809.0   Max.   :2.00   Max.   :2.000   Max.   :4.000  
##                                                                 
##      region            edad          p1_anyo         p1_mes      
##  Min.   : 1.000   Min.   :18.00   Min.   :1928   Min.   : 1.000  
##  1st Qu.: 6.000   1st Qu.:29.00   1st Qu.:1956   1st Qu.: 4.000  
##  Median :10.000   Median :49.00   Median :1967   Median : 7.000  
##  Mean   : 9.447   Mean   :46.72   Mean   :1969   Mean   : 6.663  
##  3rd Qu.:13.000   3rd Qu.:60.00   3rd Qu.:1986   3rd Qu.:10.000  
##  Max.   :15.000   Max.   :87.00   Max.   :1998   Max.   :12.000  
##                                                                  
##        p2               p3              p4              p5       
##  Min.   : 1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.: 1.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median : 5.000   Median :2.000   Median :1.000   Median :1.000  
##  Mean   : 4.417   Mean   :1.883   Mean   :1.603   Mean   :1.718  
##  3rd Qu.: 5.000   3rd Qu.:3.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :99.000   Max.   :9.000   Max.   :3.000   Max.   :8.000  
##                                   NA's   :106     NA's   :215    
##        p6               p7               p8              p9_1       
##  Min.   : 1.000   Min.   : 1.000   Min.   : 1.000   Min.   : 1.000  
##  1st Qu.: 6.000   1st Qu.: 7.000   1st Qu.: 7.000   1st Qu.: 7.000  
##  Median : 7.000   Median : 8.000   Median : 9.000   Median : 8.000  
##  Mean   : 7.303   Mean   : 7.893   Mean   : 9.123   Mean   : 8.277  
##  3rd Qu.: 9.000   3rd Qu.:10.000   3rd Qu.:10.000   3rd Qu.:10.000  
##  Max.   :10.000   Max.   :10.000   Max.   :99.000   Max.   :88.000  
##                                                                     
##       p9_2             p9_3             p9_4             p9_5       
##  Min.   : 1.000   Min.   : 1.000   Min.   : 1.000   Min.   : 1.000  
##  1st Qu.: 8.000   1st Qu.: 7.000   1st Qu.: 7.000   1st Qu.: 7.000  
##  Median : 9.000   Median : 9.000   Median : 8.000   Median : 9.000  
##  Mean   : 8.537   Mean   : 8.127   Mean   : 8.063   Mean   : 8.157  
##  3rd Qu.:10.000   3rd Qu.:10.000   3rd Qu.:10.000   3rd Qu.:10.000  
##  Max.   :10.000   Max.   :10.000   Max.   :10.000   Max.   :10.000  
## 

Para ver las dimensiones del dataframe

dim(df_desiguales_csv)
## [1] 300  20

Algunos respasos: archivos crados en .RData y .rds Los archivos .Rdata ó .Rda permiten almacenar