El primer paso para ejecutar anÔlisis de datos en R (o en cualquier otro entorno similar), es la importación de las tablas de datos que se va a utilizar.

Con esto en mente, se debe tener en cuenta que dichas tablas se pueden presentar en diversos formatos, por lo que a su vez se requieren de diferentes métodos de importación. Al respecto, los principales de estos formatos son:

Este tipo de archivos ademÔs, pueden estar ubicados en un repositorio local, en una herramienta de gestión de datos o en una pÔgina web.

Para atender todas estas necesidades (y otras que ya veremos mƔs adelante), R posee una librerƭa especializada llamada tidyverse.

1. Instalación y activación del tidyverse

Ejecute el siguiente comando en su consola para instalar por primera vez el tidyverse:

install.packages("tidyverse")

Espere mientras R Studio busca en los repositorios de internet la librerĆ­a y la instala.

Una vez instalada, una librerĆ­a puede ser cargada ejecutando el siguiente comando:

library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
-- Attaching packages --------------------------------------- tidyverse 1.3.0 --
v ggplot2 3.3.3     v purrr   0.3.4
v tibble  3.1.1     v dplyr   1.0.5
v tidyr   1.1.3     v stringr 1.4.0
v readr   1.4.0     v forcats 0.5.1
-- Conflicts ------------------------------------------ tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()

Es importante seƱalar que una vez que se ha instalado una librerƭa, la misma queda ya guardada en R, y puede cargarse siempre en cualquier script.

Ahora bien, una vez cargada, puede verificar que la librería tidyverse estÔ activa en la sesión ejecutando el siguiente comando que permite visualizar todas las librerías en uso:

(.packages())
 [1] "forcats"   "stringr"   "dplyr"     "purrr"     "readr"     "tidyr"    
 [7] "tibble"    "ggplot2"   "tidyverse" "stats"     "graphics"  "grDevices"
[13] "utils"     "datasets"  "methods"   "base"     

2. Establecimiento de un directorio de trabajo

Como segunda acción importante antes de improtar datos, se debe establecer un directorio de trabajo, esto es, se debe indicar a R el lugar donde se encuentran localizados los archivos que queremos importar.

Para emprezar, verifiquemos el directorio de trabajo actual:

getwd()
[1] "C:/Users/jsara/OneDrive/Documentos/UHemisferios/BI 2021-2/Scripts"

Y a continuación definamos el directorio deseado (aquel donde estÔn los archivos a importar). Para esto, hay dos formas:

2.1 Uso de sintaxis

Esta forma requiere que se conozca la dirección de la carpeta donde estÔn los archivos, tal que:

#Ingrese la dirección que correponda a cada una de sus computadoras donde guardaron los archivos que desacargaron del Aula Virtual
direccion <- "C:/Users/jsara/OneDrive/Documentos/UHemisferios/BI 2021-2/Datasets/Importacion"
setwd(direccion)

Una forma de obtener el texto con la dirección es usando el explorador, dirigiĆ©ndose a la carpeta deseada, y dando click sobre la tab superior. Inmediatamente allĆ­ aparecerĆ” el texto, el cual se lo puede copiar y pegar en el script entre comillas y cambiando los caracteres ā€œ\ā€ por ā€œ/ā€ si corresponde.

2.2 Uso de menĆŗ

Esta segunda forma, puede verse como una mÔs amigable y que requiere menor cantidad de código. FuncionarÔ muy bien siempre que solamente se requiera un directorio de trabajo en un mismo script.

Para esto, seguir los siguientes pasos:

  1. Ingresar al menú Sesión en la parte superior de R Studio.
  2. Hacer click en la opción Establecer Directorio de Trabajo
  3. En el submenĆŗ que se despliega seleccionar la opcion Escoger Directorio…
  4. Utilizar el navegador para seleccionar la carpeta deseada

Si nos parece mƔs fƔcil, tambiƩn podemos usar el shortcut Ctrl+Shift+H para llegar al navegador y allƭ seleccionar la carpeta deseada.

2.3 Verificación de archivos contenidos en directorio de trabajo

Para verificar los archivos existentes en el directorio de trabajo es posible utilizar la siguiente función:

list.files()
 [1] "01_Objetos_Basicos.nb.html" "01_Objetos_Basicos.R"      
 [3] "01_Objetos_Basicos.Rmd"     "02_Importacion.nb.html"    
 [5] "02_Importacion.Rmd"         "ejemplo_csv.csv"           
 [7] "ejemplo_pyc.csv"            "ejemplo_tsv.txt"           
 [9] "ejemplo_xls.xlsx"           "rsconnect"                 

3. Importación de archivos separados por comas

Los archivos separados por comas (CSV) son una forma bastante frecuente de guardar tablas de datos orginadas en Excel dada su capacidad de compresión y bajo uso de memoria de almacenamiento. La función read_csv de la librería tidyverse permite leer y cargar archivos de este tipo, de la siguiente forma.

datos_csv <- read_csv(file = "ejemplo_csv.csv",
                      col_names = TRUE) #En caso de que estemos seguros que la tabla en el archivo tiene nombre de columnas

-- Column specification --------------------------------------------------------
cols(
  date = col_character(),
  cliente_id = col_double(),
  prod_id = col_double(),
  unidades = col_double(),
  valor = col_double()
)

Miremos en mƔs detalle el tipo de objeto creado:

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

Notemos que el archivo es un data frame, pero tambiĆ©n es una ā€œtibbleā€ que es tipo de tabla de datos mĆ”s eficiente computacionalmente y propio del tidyverse.

Estudiemos su estructura, pero ahora en vez de usar str, veamos la opción de la función glimpse del tidyverse

glimpse(datos_csv)
Rows: 438,692
Columns: 5
$ date       <chr> "1/1/2015", "1/3/2015", "1/5/2015", "1/6/2015", "1/7/2015",~
$ cliente_id <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,~
$ prod_id    <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,~
$ unidades   <dbl> 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2,~
$ valor      <dbl> 38.72, 38.72, 38.72, 19.36, 38.72, 38.72, 38.72, 38.72, 19.~

Notemos que el resultado obtenido entre str y glimpse es el mismo, solamente hay una mejora a nivel de la presentación. En adelante, podemos usar cualquiera de estas sintaxis de forma indistinta.

Finalmente, demos una mirada a los datos con View (o su equivalente view en el tidyverse).

view(datos_csv)

Concluyamos esta parte haciendo un resumen estadĆ­stico del data frame:

summary(datos_csv)
     date             cliente_id        prod_id        unidades     
 Length:438692      Min.   : 1.000   Min.   : 1.0   Min.   : 1.000  
 Class :character   1st Qu.: 3.000   1st Qu.:13.0   1st Qu.: 4.000  
 Mode  :character   Median : 6.000   Median :26.0   Median : 6.000  
                    Mean   : 5.501   Mean   :25.5   Mean   : 6.039  
                    3rd Qu.: 8.000   3rd Qu.:38.0   3rd Qu.: 8.000  
                    Max.   :10.000   Max.   :50.0   Max.   :24.000  
     valor       
 Min.   : 14.08  
 1st Qu.: 70.40  
 Median :110.00  
 Mean   :123.59  
 3rd Qu.:158.40  
 Max.   :528.00  

Notemos que la importación funcionó, pero con algunos pequeños contratiempos:

Para arreglar esto, vamos a volver a importar, pero con unas especificaciones adicionales en la función read_csv:

datos_csv <- read_csv(file = "ejemplo_csv.csv",
                      #Se especifican nombres personalizados a cada columna
                      col_names = c("fecha",
                                    "cliente",
                                    "producto",
                                    "unidades",
                                    "valor"),
                      #No se consideran los nombres originales
                      skip = 1,
                      #Se define la clase de cada columna
                      col_types = cols(fecha = col_date(format = "%m/%d/%Y"),
                                       cliente = col_factor(),
                                       producto = col_factor(),
                                       unidades = col_integer(),
                                       valor = col_double()))

Veamos la estructura de nuestra tabla con estos ajustes:

glimpse(datos_csv)
Rows: 438,692
Columns: 5
$ fecha    <date> 2015-01-01, 2015-01-03, 2015-01-05, 2015-01-06, 2015-01-07, ~
$ cliente  <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1~
$ producto <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1~
$ unidades <int> 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2~
$ valor    <dbl> 38.72, 38.72, 38.72, 19.36, 38.72, 38.72, 38.72, 38.72, 19.36~

Y el resumen estadĆ­stico:

summary(datos_csv)
     fecha               cliente          producto         unidades     
 Min.   :2015-01-01   5      : 44037   24     :  8876   Min.   : 1.000  
 1st Qu.:2015-10-02   6      : 43938   3      :  8847   1st Qu.: 4.000  
 Median :2016-07-02   8      : 43900   16     :  8847   Median : 6.000  
 Mean   :2016-07-01   1      : 43892   26     :  8831   Mean   : 6.039  
 3rd Qu.:2017-04-02   10     : 43880   42     :  8824   3rd Qu.: 8.000  
 Max.   :2017-12-31   4      : 43860   29     :  8816   Max.   :24.000  
                      (Other):175185   (Other):385651                   
     valor       
 Min.   : 14.08  
 1st Qu.: 70.40  
 Median :110.00  
 Mean   :123.59  
 3rd Qu.:158.40  
 Max.   :528.00  
                 

Se ha logrado una importación mucho mÔs limpia incluso considerando que estamos trabajando con cerca de medio millón de registros.

4. Importación de archivos planos de texto

En muchas ocasiones, las tablas de datos se guardan de forma bƔsica y genƩrica en formatos texto (txt). Cuando los archivos estƔn en este formato, pueden compartirse entre distintos sistemas operativos (Windows, Linux, Mac), o cargarse de forma mƔs sencilla en pƔginas web.

4.1 Archivos separados por tabulados

Con R podemos cargar datos, siempre que sepamos que los separadores son tabulados, usando la función read_tsv del tidyverse.

datos_tsv <- read_tsv(file = "ejemplo_tsv.txt",
                      col_names = TRUE)

-- Column specification --------------------------------------------------------
cols(
  .default = col_double()
)
i Use `spec()` for the full column specifications.

Al igual que antes, veamos la estructura y un resumen estadĆ­stico de esta tabla importada.

glimpse(datos_tsv)
Rows: 284,807
Columns: 31
$ Time   <dbl> 0, 0, 1, 1, 2, 2, 4, 7, 7, 9, 10, 10, 10, 11, 12, 12, 12, 13, 1~
$ V1     <dbl> -1.3598071, 1.1918571, -1.3583541, -0.9662717, -1.1582331, -0.4~
$ V2     <dbl> -0.07278117, 0.26615071, -1.34016307, -0.18522601, 0.87773676, ~
$ V3     <dbl> 2.53634674, 0.16648011, 1.77320934, 1.79299334, 1.54871785, 1.1~
$ V4     <dbl> 1.37815522, 0.44815408, 0.37977959, -0.86329128, 0.40303393, -0~
$ V5     <dbl> -0.33832077, 0.06001765, -0.50319813, -0.01030888, -0.40719338,~
$ V6     <dbl> 0.46238778, -0.08236081, 1.80049938, 1.24720317, 0.09592146, -0~
$ V7     <dbl> 0.239598554, -0.078802983, 0.791460956, 0.237608940, 0.59294074~
$ V8     <dbl> 0.098697901, 0.085101655, 0.247675787, 0.377435875, -0.27053267~
$ V9     <dbl> 0.3637870, -0.2554251, -1.5146543, -1.3870241, 0.8177393, -0.56~
$ V10    <dbl> 0.09079417, -0.16697441, 0.20764287, -0.05495192, 0.75307443, -~
$ V11    <dbl> -0.55159953, 1.61272666, 0.62450146, -0.22648726, -0.82284288, ~
$ V12    <dbl> -0.61780086, 1.06523531, 0.06608369, 0.17822823, 0.53819555, 0.~
$ V13    <dbl> -0.99138985, 0.48909502, 0.71729273, 0.50775687, 1.34585159, -0~
$ V14    <dbl> -0.31116935, -0.14377230, -0.16594592, -0.28792375, -1.11966984~
$ V15    <dbl> 1.468176972, 0.635558093, 2.345864949, -0.631418118, 0.17512113~
$ V16    <dbl> -0.47040053, 0.46391704, -2.89008319, -1.05964725, -0.45144918,~
$ V17    <dbl> 0.207971242, -0.114804663, 1.109969379, -0.684092786, -0.237033~
$ V18    <dbl> 0.02579058, -0.18336127, -0.12135931, 1.96577500, -0.03819479, ~
$ V19    <dbl> 0.40399296, -0.14578304, -2.26185709, -1.23262197, 0.80348692, ~
$ V20    <dbl> 0.25141210, -0.06908314, 0.52497973, -0.20803778, 0.40854236, 0~
$ V21    <dbl> -0.018306778, -0.225775248, 0.247998153, -0.108300452, -0.00943~
$ V22    <dbl> 0.277837576, -0.638671953, 0.771679402, 0.005273597, 0.79827849~
$ V23    <dbl> -0.110473910, 0.101288021, 0.909412262, -0.190320519, -0.137458~
$ V24    <dbl> 0.06692808, -0.33984648, -0.68928096, -1.17557533, 0.14126698, ~
$ V25    <dbl> 0.12853936, 0.16717040, -0.32764183, 0.64737603, -0.20600959, -~
$ V26    <dbl> -0.18911484, 0.12589453, -0.13909657, -0.22192884, 0.50229222, ~
$ V27    <dbl> 0.133558377, -0.008983099, -0.055352794, 0.062722849, 0.2194222~
$ V28    <dbl> -0.021053053, 0.014724169, -0.059751841, 0.061457629, 0.2151531~
$ Amount <dbl> 149.62, 2.69, 378.66, 123.50, 69.99, 3.67, 4.99, 40.80, 93.20, ~
$ Class  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ~
summary(datos_tsv)
      Time              V1                  V2                  V3          
 Min.   :     0   Min.   :-56.40751   Min.   :-72.71573   Min.   :-48.3256  
 1st Qu.: 54202   1st Qu.: -0.92037   1st Qu.: -0.59855   1st Qu.: -0.8904  
 Median : 84692   Median :  0.01811   Median :  0.06549   Median :  0.1799  
 Mean   : 94814   Mean   :  0.00000   Mean   :  0.00000   Mean   :  0.0000  
 3rd Qu.:139321   3rd Qu.:  1.31564   3rd Qu.:  0.80372   3rd Qu.:  1.0272  
 Max.   :172792   Max.   :  2.45493   Max.   : 22.05773   Max.   :  9.3826  
       V4                 V5                   V6                 V7          
 Min.   :-5.68317   Min.   :-113.74331   Min.   :-26.1605   Min.   :-43.5572  
 1st Qu.:-0.84864   1st Qu.:  -0.69160   1st Qu.: -0.7683   1st Qu.: -0.5541  
 Median :-0.01985   Median :  -0.05434   Median : -0.2742   Median :  0.0401  
 Mean   : 0.00000   Mean   :   0.00000   Mean   :  0.0000   Mean   :  0.0000  
 3rd Qu.: 0.74334   3rd Qu.:   0.61193   3rd Qu.:  0.3986   3rd Qu.:  0.5704  
 Max.   :16.87534   Max.   :  34.80167   Max.   : 73.3016   Max.   :120.5895  
       V8                  V9                 V10                 V11          
 Min.   :-73.21672   Min.   :-13.43407   Min.   :-24.58826   Min.   :-4.79747  
 1st Qu.: -0.20863   1st Qu.: -0.64310   1st Qu.: -0.53543   1st Qu.:-0.76249  
 Median :  0.02236   Median : -0.05143   Median : -0.09292   Median :-0.03276  
 Mean   :  0.00000   Mean   :  0.00000   Mean   :  0.00000   Mean   : 0.00000  
 3rd Qu.:  0.32735   3rd Qu.:  0.59714   3rd Qu.:  0.45392   3rd Qu.: 0.73959  
 Max.   : 20.00721   Max.   : 15.59500   Max.   : 23.74514   Max.   :12.01891  
      V12                V13                V14                V15          
 Min.   :-18.6837   Min.   :-5.79188   Min.   :-19.2143   Min.   :-4.49894  
 1st Qu.: -0.4056   1st Qu.:-0.64854   1st Qu.: -0.4256   1st Qu.:-0.58288  
 Median :  0.1400   Median :-0.01357   Median :  0.0506   Median : 0.04807  
 Mean   :  0.0000   Mean   : 0.00000   Mean   :  0.0000   Mean   : 0.00000  
 3rd Qu.:  0.6182   3rd Qu.: 0.66251   3rd Qu.:  0.4931   3rd Qu.: 0.64882  
 Max.   :  7.8484   Max.   : 7.12688   Max.   : 10.5268   Max.   : 8.87774  
      V16                 V17                 V18           
 Min.   :-14.12985   Min.   :-25.16280   Min.   :-9.498746  
 1st Qu.: -0.46804   1st Qu.: -0.48375   1st Qu.:-0.498850  
 Median :  0.06641   Median : -0.06568   Median :-0.003636  
 Mean   :  0.00000   Mean   :  0.00000   Mean   : 0.000000  
 3rd Qu.:  0.52330   3rd Qu.:  0.39968   3rd Qu.: 0.500807  
 Max.   : 17.31511   Max.   :  9.25353   Max.   : 5.041069  
      V19                 V20                 V21           
 Min.   :-7.213527   Min.   :-54.49772   Min.   :-34.83038  
 1st Qu.:-0.456299   1st Qu.: -0.21172   1st Qu.: -0.22839  
 Median : 0.003735   Median : -0.06248   Median : -0.02945  
 Mean   : 0.000000   Mean   :  0.00000   Mean   :  0.00000  
 3rd Qu.: 0.458949   3rd Qu.:  0.13304   3rd Qu.:  0.18638  
 Max.   : 5.591971   Max.   : 39.42090   Max.   : 27.20284  
      V22                  V23                 V24          
 Min.   :-10.933144   Min.   :-44.80774   Min.   :-2.83663  
 1st Qu.: -0.542350   1st Qu.: -0.16185   1st Qu.:-0.35459  
 Median :  0.006782   Median : -0.01119   Median : 0.04098  
 Mean   :  0.000000   Mean   :  0.00000   Mean   : 0.00000  
 3rd Qu.:  0.528554   3rd Qu.:  0.14764   3rd Qu.: 0.43953  
 Max.   : 10.503090   Max.   : 22.52841   Max.   : 4.58455  
      V25                 V26                V27            
 Min.   :-10.29540   Min.   :-2.60455   Min.   :-22.565679  
 1st Qu.: -0.31715   1st Qu.:-0.32698   1st Qu.: -0.070840  
 Median :  0.01659   Median :-0.05214   Median :  0.001342  
 Mean   :  0.00000   Mean   : 0.00000   Mean   :  0.000000  
 3rd Qu.:  0.35072   3rd Qu.: 0.24095   3rd Qu.:  0.091045  
 Max.   :  7.51959   Max.   : 3.51735   Max.   : 31.612198  
      V28                Amount             Class         
 Min.   :-15.43008   Min.   :    0.00   Min.   :0.000000  
 1st Qu.: -0.05296   1st Qu.:    5.60   1st Qu.:0.000000  
 Median :  0.01124   Median :   22.00   Median :0.000000  
 Mean   :  0.00000   Mean   :   88.35   Mean   :0.001728  
 3rd Qu.:  0.07828   3rd Qu.:   77.17   3rd Qu.:0.000000  
 Max.   : 33.84781   Max.   :25691.16   Max.   :1.000000  

4.1 Archivos separados por otros caracteres

Los archivos planos también pueden estar separados por caracteres diferentes a comas (,) o tabulados. En estos casos podemos usar la función read_delim del tidyverse, como en el siguiente ejemplo en el que los datos estÔn separados por el signo de punto y coma (;)

datos_pyc <- read_delim(file = "ejemplo_pyc.txt",
                        delim = ";",
                        col_names = TRUE)

-- Column specification --------------------------------------------------------
cols(
  .default = col_double(),
  city = col_character(),
  city_ascii = col_character(),
  city_alt = col_character(),
  state_id = col_character(),
  state_name = col_character(),
  county_name = col_character(),
  county_fips_all = col_character(),
  county_name_all = col_character(),
  source = col_character(),
  military = col_logical(),
  incorporated = col_logical(),
  township = col_logical(),
  timezone = col_character(),
  zips = col_character(),
  `,` = col_character()
)
i Use `spec()` for the full column specifications.

Notemos que entre los parƔmetros (o atributos) de la funcion utilizada se encuentra delim, donde se indica cual es el separador de los datos que queremos importar.

Igual que antes, veamos su estructura y un resumen estadĆ­stico

glimpse(datos_pyc)
Rows: 107,546
Columns: 82
$ city                        <chr> "Rodena Beach", "South Creek", "Toroda", "~
$ city_ascii                  <chr> "Rodena Beach", "South Creek", "Toroda", "~
$ city_alt                    <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA~
$ state_id                    <chr> "WA", "WA", "WA", "WA", "WA", "WA", "WA", ~
$ state_name                  <chr> "Washington", "Washington", "Washington", ~
$ county_fips                 <dbl> 53029, 53053, 53019, 53053, 53037, 53005, ~
$ county_name                 <chr> "Island", "Pierce", "Ferry", "Pierce", "Ki~
$ county_fips_all             <chr> "53029", "53053", "53019", "53053", "53037~
$ county_name_all             <chr> "Island", "Pierce", "Ferry", "Pierce", "Ki~
$ lat                         <dbl> 48.2190, 46.9994, 48.9429, 47.1223, 47.250~
$ lng                         <dbl> -122.6310, -122.3921, -118.7620, -122.5354~
$ population                  <dbl> NA, 2500, NA, NA, 947, NA, 441, 9507, 3591~
$ population_proper           <dbl> NA, 2500, NA, NA, 947, NA, 441, 9507, 3591~
$ density                     <dbl> 134.2, 125.0, 18.3, 968.8, 84.0, 126.8, 16~
$ source                      <chr> "point", "polygon", "point", "point", "pol~
$ military                    <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, ~
$ incorporated                <lgl> FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TR~
$ township                    <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, ~
$ timezone                    <chr> "America/Los_Angeles", "America/Los_Angele~
$ ranking                     <dbl> 4, 3, 4, 4, 3, 4, 3, 3, 3, 5, 4, 3, 4, 5, ~
$ zips                        <chr> "98239", "98580 98387 98338", "99118", "98~
$ id                          <dbl> 1840097246, 1840116412, 1840097767, 184009~
$ age_median                  <dbl> NA, 50.1, NA, NA, 41.4, NA, 53.0, 44.8, 41~
$ age_under_10                <dbl> NA, 5.0, NA, NA, 5.0, NA, 11.5, 11.3, 10.9~
$ age_10_to_19                <dbl> NA, 9.4, NA, NA, 21.8, NA, 9.8, 12.5, 14.1~
$ age_20s                     <dbl> NA, 9.8, NA, NA, 8.1, NA, 4.7, 7.5, 10.0, ~
$ age_30s                     <dbl> NA, 7.3, NA, NA, 12.8, NA, 11.7, 10.4, 13.~
$ age_40s                     <dbl> NA, 18.1, NA, NA, 16.6, NA, 7.4, 15.9, 14.~
$ age_50s                     <dbl> NA, 26.1, NA, NA, 8.4, NA, 15.0, 11.6, 16.~
$ age_60s                     <dbl> NA, 11.8, NA, NA, 11.6, NA, 19.8, 14.6, 12~
$ age_70s                     <dbl> NA, 8.1, NA, NA, 8.4, NA, 15.7, 8.1, 6.6, ~
$ age_over_80                 <dbl> NA, 4.4, NA, NA, 7.2, NA, 4.3, 8.1, 1.3, N~
$ male                        <dbl> NA, 53.8, NA, NA, 48.9, NA, 50.6, 48.5, 54~
$ female                      <dbl> NA, 46.2, NA, NA, 51.1, NA, 49.4, 51.5, 45~
$ married                     <dbl> NA, 49.8, NA, NA, 43.1, NA, 55.2, 55.2, 58~
$ divorced                    <dbl> NA, 20.4, NA, NA, 19.7, NA, 20.2, 11.9, 15~
$ never_married               <dbl> NA, 25.9, NA, NA, 27.5, NA, 18.2, 23.5, 22~
$ widowed                     <dbl> NA, 4.0, NA, NA, 9.7, NA, 6.4, 9.4, 3.8, N~
$ family_size                 <dbl> NA, 2.67, NA, NA, 2.81, NA, 2.78, 2.94, 3.~
$ family_dual_income          <dbl> NA, 58.3, NA, NA, 46.9, NA, 23.9, 45.5, 61~
$ income_household_median     <dbl> NA, 58364, NA, NA, 54853, NA, 30833, 74159~
$ income_household_under_5    <dbl> NA, 0.0, NA, NA, 1.7, NA, 0.0, 3.3, 4.3, N~
$ income_household_5_to_10    <dbl> NA, 2.0, NA, NA, 3.8, NA, 8.4, 2.1, 0.0, N~
$ income_household_10_to_15   <dbl> NA, 1.7, NA, NA, 4.5, NA, 7.9, 1.9, 0.7, N~
$ income_household_15_to_20   <dbl> NA, 1.6, NA, NA, 9.4, NA, 6.8, 3.3, 2.1, N~
$ income_household_20_to_25   <dbl> NA, 8.0, NA, NA, 1.0, NA, 9.5, 2.9, 2.7, N~
$ income_household_25_to_35   <dbl> NA, 12.5, NA, NA, 6.6, NA, 25.3, 8.8, 2.7,~
$ income_household_35_to_50   <dbl> NA, 21.7, NA, NA, 16.0, NA, 17.4, 10.7, 10~
$ income_household_50_to_75   <dbl> NA, 17.9, NA, NA, 19.1, NA, 11.6, 18.0, 16~
$ income_household_75_to_100  <dbl> NA, 15.0, NA, NA, 24.7, NA, 5.3, 14.0, 15.~
$ income_household_100_to_150 <dbl> NA, 10.2, NA, NA, 4.2, NA, 5.3, 17.6, 21.1~
$ income_household_150_over   <dbl> NA, 9.5, NA, NA, 9.0, NA, 2.6, 17.5, 22.7,~
$ income_household_six_figure <dbl> NA, 19.7, NA, NA, 13.2, NA, 7.9, 35.1, 43.~
$ income_individual_median    <dbl> NA, 29304, NA, NA, 28393, NA, 16042, 36947~
$ home_ownership              <dbl> NA, 85.1, NA, NA, 67.0, NA, 85.3, 59.9, 91~
$ home_value                  <dbl> NA, NA, NA, NA, 193836, NA, 88075, 380936,~
$ rent_median                 <dbl> NA, 1092, NA, NA, 1101, NA, 550, 1507, 178~
$ rent_burden                 <dbl> NA, 22.7, NA, NA, 18.7, NA, 20.3, 18.9, 22~
$ education_less_highschool   <dbl> NA, 8.0, NA, NA, 9.7, NA, 7.2, 3.6, 7.9, N~
$ education_highschool        <dbl> NA, 36.3, NA, NA, 37.0, NA, 35.4, 12.6, 32~
$ education_some_college      <dbl> NA, 41.4, NA, NA, 29.6, NA, 44.8, 32.8, 35~
$ education_bachelors         <dbl> NA, 10.9, NA, NA, 13.7, NA, 7.5, 31.4, 17.~
$ education_graduate          <dbl> NA, 3.4, NA, NA, 10.0, NA, 5.0, 19.5, 7.6,~
$ education_college_or_above  <dbl> NA, 14.3, NA, NA, 23.7, NA, 12.5, 50.9, 24~
$ education_stem_degree       <dbl> NA, 71.0, NA, NA, 67.7, NA, 12.5, 44.9, 47~
$ labor_force_participation   <dbl> NA, 66.0, NA, NA, 57.4, NA, 42.2, 56.1, 61~
$ unemployment_rate           <dbl> NA, 3.5, NA, NA, 1.6, NA, 11.8, 9.4, 4.7, ~
$ race_white                  <dbl> NA, 93.0, NA, NA, 98.8, NA, 88.1, 87.8, 88~
$ race_black                  <dbl> NA, 1.2, NA, NA, 0.0, NA, 0.0, 0.9, 0.0, N~
$ race_asian                  <dbl> NA, 0.0, NA, NA, 0.0, NA, 0.0, 5.5, 5.4, N~
$ race_native                 <dbl> NA, 1.9, NA, NA, 0.6, NA, 0.7, 1.4, 0.0, N~
$ race_pacific                <dbl> NA, 0.0, NA, NA, 0.0, NA, 0.0, 0.1, 0.0, N~
$ race_other                  <dbl> NA, 0.0, NA, NA, 0.0, NA, 1.0, 1.2, 0.6, N~
$ race_multiple               <dbl> NA, 3.8, NA, NA, 0.6, NA, 10.3, 3.0, 5.3, ~
$ hispanic                    <dbl> NA, 2.6, NA, NA, 0.6, NA, 6.7, 4.3, 7.1, N~
$ disabled                    <dbl> NA, 21.8, NA, NA, 17.3, NA, 31.7, 14.9, 12~
$ poverty                     <dbl> NA, 2.8, NA, NA, 13.3, NA, 18.3, 5.6, 6.1,~
$ limited_english             <dbl> NA, 1.5, NA, NA, 0.0, NA, 0.0, 1.9, 0.0, N~
$ commute_time                <dbl> NA, 43.3, NA, NA, 21.5, NA, 31.8, 23.8, 34~
$ health_uninsured            <dbl> NA, 3.6, NA, NA, 11.9, NA, 7.2, 5.4, 7.8, ~
$ veteran                     <dbl> NA, 18.1, NA, NA, 10.8, NA, 18.3, 12.3, 12~
$ `,`                         <chr> ",", ",", ",", ",", ",", ",", ",", ",", ",~
summary(datos_pyc)
     city            city_ascii          city_alt           state_id        
 Length:107546      Length:107546      Length:107546      Length:107546     
 Class :character   Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character  
                                                                            
                                                                            
                                                                            
                                                                            
  state_name         county_fips    county_name        county_fips_all   
 Length:107546      Min.   : 1001   Length:107546      Length:107546     
 Class :character   1st Qu.:18141   Class :character   Class :character  
 Mode  :character   Median :31051   Mode  :character   Mode  :character  
                    Mean   :30565                                        
                    3rd Qu.:42091                                        
                    Max.   :78030                                        
                                                                         
 county_name_all         lat             lng            population      
 Length:107546      Min.   :17.69   Min.   :-176.63   Min.   :       0  
 Class :character   1st Qu.:35.24   1st Qu.: -94.88   1st Qu.:     347  
 Mode  :character   Median :38.91   Median : -85.79   Median :    1174  
                    Mean   :38.42   Mean   : -89.33   Mean   :   13484  
                    3rd Qu.:41.66   3rd Qu.: -78.96   3rd Qu.:    4580  
                    Max.   :71.27   Max.   : 178.88   Max.   :19354922  
                                                      NA's   :76405     
 population_proper    density           source           military      
 Min.   :      0   Min.   :    0.0   Length:107546      Mode :logical  
 1st Qu.:    347   1st Qu.:   11.5   Class :character   FALSE:107459   
 Median :   1171   Median :   50.6   Mode  :character   TRUE :87       
 Mean   :   8599   Mean   :  286.2                                     
 3rd Qu.:   4415   3rd Qu.:  264.0                                     
 Max.   :8622698   Max.   :32085.0                                     
 NA's   :76405     NA's   :236                                         
 incorporated     township         timezone            ranking     
 Mode :logical   Mode :logical   Length:107546      Min.   :1.000  
 FALSE:86899     FALSE:105291    Class :character   1st Qu.:3.000  
 TRUE :20647     TRUE :2255      Mode  :character   Median :4.000  
                                                    Mean   :3.909  
                                                    3rd Qu.:4.000  
                                                    Max.   :5.000  
                                                                   
     zips                 id              age_median     age_under_10  
 Length:107546      Min.   :1.630e+09   Min.   : 3.90   Min.   : 0.00  
 Class :character   1st Qu.:1.840e+09   1st Qu.:35.70   1st Qu.: 8.60  
 Mode  :character   Median :1.840e+09   Median :41.00   Median :11.80  
                    Mean   :1.838e+09   Mean   :41.79   Mean   :11.83  
                    3rd Qu.:1.840e+09   3rd Qu.:47.00   3rd Qu.:14.90  
                    Max.   :1.850e+09   Max.   :91.40   Max.   :71.40  
                                        NA's   :76859   NA's   :76642  
  age_10_to_19      age_20s          age_30s          age_40s      
 Min.   : 0.00   Min.   :  0.00   Min.   :  0.00   Min.   :  0.00  
 1st Qu.: 9.50   1st Qu.:  8.10   1st Qu.:  8.60   1st Qu.:  9.50  
 Median :12.50   Median : 11.40   Median : 11.50   Median : 12.00  
 Mean   :12.56   Mean   : 11.69   Mean   : 11.37   Mean   : 12.07  
 3rd Qu.:15.40   3rd Qu.: 14.50   3rd Qu.: 14.00   3rd Qu.: 14.50  
 Max.   :79.70   Max.   :100.00   Max.   :100.00   Max.   :100.00  
 NA's   :76642   NA's   :76642    NA's   :76642    NA's   :76642   
    age_50s          age_60s          age_70s        age_over_80   
 Min.   :  0.00   Min.   :  0.00   Min.   :  0.00   Min.   :  0.0  
 1st Qu.: 11.30   1st Qu.:  9.10   1st Qu.:  4.80   1st Qu.:  2.2  
 Median : 14.00   Median : 11.80   Median :  6.80   Median :  3.9  
 Mean   : 14.74   Mean   : 13.07   Mean   :  7.96   Mean   :  4.7  
 3rd Qu.: 17.00   3rd Qu.: 15.10   3rd Qu.:  9.40   3rd Qu.:  6.0  
 Max.   :100.00   Max.   :100.10   Max.   :100.00   Max.   :100.0  
 NA's   :76642    NA's   :76642    NA's   :76642    NA's   :76642  
      male            female          married          divorced     
 Min.   :  0.00   Min.   :  0.00   Min.   :  0.00   Min.   :  0.00  
 1st Qu.: 46.80   1st Qu.: 48.30   1st Qu.: 43.20   1st Qu.: 10.00  
 Median : 49.10   Median : 50.90   Median : 51.10   Median : 13.60  
 Mean   : 49.48   Mean   : 50.52   Mean   : 50.69   Mean   : 14.25  
 3rd Qu.: 51.70   3rd Qu.: 53.20   3rd Qu.: 58.80   3rd Qu.: 17.60  
 Max.   :100.00   Max.   :100.00   Max.   :100.00   Max.   :100.00  
 NA's   :76884    NA's   :76884    NA's   :76884    NA's   :76884   
 never_married       widowed        family_size    family_dual_income
 Min.   :  0.00   Min.   :  0.00   Min.   : 1.17   Min.   :  0.00    
 1st Qu.: 21.30   1st Qu.:  4.50   1st Qu.: 2.81   1st Qu.: 39.70    
 Median : 26.70   Median :  6.60   Median : 3.05   Median : 50.00    
 Mean   : 27.69   Mean   :  7.37   Mean   : 3.12   Mean   : 48.68    
 3rd Qu.: 32.90   3rd Qu.:  9.20   3rd Qu.: 3.32   3rd Qu.: 58.80    
 Max.   :100.00   Max.   :100.00   Max.   :19.96   Max.   :100.00    
 NA's   :76884    NA's   :76884    NA's   :76828   NA's   :76828     
 income_household_median income_household_under_5 income_household_5_to_10
 Min.   :  2499          Min.   :  0.00           Min.   :  0.00          
 1st Qu.: 38125          1st Qu.:  0.50           1st Qu.:  0.60          
 Median : 49063          Median :  2.20           Median :  2.50          
 Mean   : 55252          Mean   :  3.39           Mean   :  4.01          
 3rd Qu.: 64492          3rd Qu.:  4.40           3rd Qu.:  5.40          
 Max.   :250001          Max.   :100.00           Max.   :100.00          
 NA's   :78407           NA's   :76661            NA's   :76661           
 income_household_10_to_15 income_household_15_to_20 income_household_20_to_25
 Min.   :  0.00            Min.   :  0.00            Min.   :  0.00           
 1st Qu.:  2.00            1st Qu.:  2.30            1st Qu.:  2.50           
 Median :  4.70            Median :  4.90            Median :  5.00           
 Mean   :  5.96            Mean   :  5.92            Mean   :  5.85           
 3rd Qu.:  8.20            3rd Qu.:  8.00            3rd Qu.:  7.80           
 Max.   :100.00            Max.   :100.00            Max.   :100.00           
 NA's   :76661             NA's   :76661             NA's   :76661            
 income_household_25_to_35 income_household_35_to_50 income_household_50_to_75
 Min.   :  0.00            Min.   :  0.00            Min.   :  0.00           
 1st Qu.:  6.50            1st Qu.:  9.70            1st Qu.: 13.60           
 Median : 10.30            Median : 13.70            Median : 18.00           
 Mean   : 11.11            Mean   : 14.32            Mean   : 18.31           
 3rd Qu.: 14.10            3rd Qu.: 17.70            3rd Qu.: 22.30           
 Max.   :100.00            Max.   :100.00            Max.   :100.00           
 NA's   :76661             NA's   :76661             NA's   :76661            
 income_household_75_to_100 income_household_100_to_150
 Min.   :  0.00             Min.   :  0.00             
 1st Qu.:  7.50             1st Qu.:  5.40             
 Median : 11.50             Median : 10.20             
 Mean   : 11.78             Mean   : 11.44             
 3rd Qu.: 15.20             3rd Qu.: 16.30             
 Max.   :100.00             Max.   :100.00             
 NA's   :76661              NA's   :76661              
 income_household_150_over income_household_six_figure income_individual_median
 Min.   :  0.0             Min.   :  0.00              Min.   :  2499          
 1st Qu.:  1.1             1st Qu.:  8.10              1st Qu.: 21213          
 Median :  4.0             Median : 14.70              Median : 26170          
 Mean   :  7.9             Mean   : 19.34              Mean   : 28084          
 3rd Qu.:  9.5             3rd Qu.: 26.10              3rd Qu.: 32300          
 Max.   :100.0             Max.   :100.10              Max.   :250001          
 NA's   :76661             NA's   :76661               NA's   :77897           
 home_ownership     home_value       rent_median      rent_burden    
 Min.   :  0.00   Min.   :  10817   Min.   :  99.0   Min.   :  1.70  
 1st Qu.: 61.70   1st Qu.:  82632   1st Qu.: 548.0   1st Qu.: 13.70  
 Median : 73.40   Median : 122913   Median : 760.0   Median : 16.60  
 Mean   : 71.93   Mean   : 179826   Mean   : 920.5   Mean   : 16.98  
 3rd Qu.: 84.10   3rd Qu.: 205909   3rd Qu.:1125.0   3rd Qu.: 19.70  
 Max.   :100.00   Max.   :2000001   Max.   :4001.0   Max.   :732.80  
 NA's   :76661    NA's   :81973     NA's   :78526    NA's   :79440   
 education_less_highschool education_highschool education_some_college
 Min.   :  0.00            Min.   :  0.00       Min.   :  0.00        
 1st Qu.:  5.80            1st Qu.: 26.20       1st Qu.: 24.40        
 Median : 10.50            Median : 34.60       Median : 30.20        
 Mean   : 13.17            Mean   : 34.44       Mean   : 30.18        
 3rd Qu.: 17.50            3rd Qu.: 42.40       3rd Qu.: 35.70        
 Max.   :100.00            Max.   :100.00       Max.   :100.00        
 NA's   :76892             NA's   :76892        NA's   :76892         
 education_bachelors education_graduate education_college_or_above
 Min.   :  0.00      Min.   :  0.0      Min.   :  0.00            
 1st Qu.:  7.10      1st Qu.:  2.5      1st Qu.: 10.80            
 Median : 12.10      Median :  5.6      Median : 17.80            
 Mean   : 14.11      Mean   :  8.1      Mean   : 22.21            
 3rd Qu.: 19.20      3rd Qu.: 10.5      3rd Qu.: 29.30            
 Max.   :100.00      Max.   :100.0      Max.   :100.00            
 NA's   :76892       NA's   :76892      NA's   :76892             
 education_stem_degree labor_force_participation unemployment_rate
 Min.   :  0.00        Min.   :  0.00            Min.   :  0.00   
 1st Qu.: 30.00        1st Qu.: 53.20            1st Qu.:  2.90   
 Median : 39.70        Median : 61.20            Median :  5.50   
 Mean   : 39.07        Mean   : 59.52            Mean   :  6.97   
 3rd Qu.: 47.70        3rd Qu.: 67.50            3rd Qu.:  8.90   
 Max.   :100.00        Max.   :100.00            Max.   :100.00   
 NA's   :77966         NA's   :76642             NA's   :76804    
   race_white       race_black       race_asian      race_native    
 Min.   :  0.00   Min.   :  0.00   Min.   :  0.00   Min.   :  0.00  
 1st Qu.: 80.30   1st Qu.:  0.00   1st Qu.:  0.00   1st Qu.:  0.00  
 Median : 92.90   Median :  0.60   Median :  0.00   Median :  0.00  
 Mean   : 84.09   Mean   :  6.77   Mean   :  1.76   Mean   :  2.56  
 3rd Qu.: 97.60   3rd Qu.:  4.40   3rd Qu.:  1.50   3rd Qu.:  0.50  
 Max.   :100.00   Max.   :100.00   Max.   :100.00   Max.   :100.00  
 NA's   :76884    NA's   :76884    NA's   :76884    NA's   :76884   
  race_pacific     race_other    race_multiple       hispanic     
 Min.   : 0.00   Min.   :  0.0   Min.   :  0.00   Min.   :  0.00  
 1st Qu.: 0.00   1st Qu.:  0.0   1st Qu.:  0.00   1st Qu.:  0.40  
 Median : 0.00   Median :  0.1   Median :  1.50   Median :  3.00  
 Mean   : 0.13   Mean   :  2.1   Mean   :  2.57   Mean   :  9.58  
 3rd Qu.: 0.00   3rd Qu.:  1.5   3rd Qu.:  3.30   3rd Qu.:  9.20  
 Max.   :75.00   Max.   :100.0   Max.   :100.00   Max.   :100.00  
 NA's   :76884   NA's   :76884   NA's   :76884    NA's   :76884   
    disabled         poverty       limited_english   commute_time   
 Min.   :  0.00   Min.   :  0.00   Min.   :  0.00   Min.   :  2.80  
 1st Qu.: 10.60   1st Qu.:  6.60   1st Qu.:  0.00   1st Qu.: 20.20  
 Median : 14.70   Median : 12.60   Median :  0.00   Median : 24.60  
 Mean   : 16.07   Mean   : 15.45   Mean   :  2.77   Mean   : 25.14  
 3rd Qu.: 19.80   3rd Qu.: 21.10   3rd Qu.:  1.90   3rd Qu.: 29.40  
 Max.   :100.00   Max.   :100.00   Max.   :100.00   Max.   :110.60  
 NA's   :76645    NA's   :76893    NA's   :76661    NA's   :78764   
 health_uninsured    veteran            ,            
 Min.   :  0.00   Min.   :  0.00   Length:107546     
 1st Qu.:  4.50   1st Qu.:  6.00   Class :character  
 Median :  8.20   Median :  8.50   Mode  :character  
 Mean   : 10.42   Mean   :  9.28                     
 3rd Qu.: 13.70   3rd Qu.: 11.40                     
 Max.   :100.00   Max.   :100.00                     
 NA's   :76645    NA's   :76644                      

5. Importación de archivos excel

Si bien en el mundo del anƔlisis de datos no se suele tener como un formato preferente a las hojas de cƔlculo de Excel, no se puede negar que son una de las formas mƔs comunes de presentar tablas de datos en todo el mundo.

En este sentido, R cuenta con una librería adicional que facilita su lectura y posterior importación: readxl. Instalémosla y activémosla en nuestra sesión de R Studio.

install.packages("readxl")
library(readxl)

Para entender el uso de esta librería, veamos primero la función excel_sheets que nos permite visualizar todas las hojas de cÔlculo activades en un archivo Excel.

excel_sheets(path = "ejemplo_xls.xlsx")
[1] "vw_propiedades"      "vw_calendario"       "vw_especificaciones"

Como se puede apreciar, el archivo excel tiene 3 hojas distintas. Queremos importar solamente la primera, para lo cual vamos en primera instancia a guardar las hojas en un vector llamado ā€œhojas_excelā€.

hojas_excel <- excel_sheets(path = "ejemplo_xls.xlsx")

Una vez, que contamos con este objeto, vamos a importar la primera hoja, utilizando la función read_excel de readxl.

datos_xls <- read_excel(path = "ejemplo_xls.xlsx",
                        sheet = hojas_excel[1],
                        col_names = TRUE)

Veamos su estructura y el resumen estadĆ­stico correspondiente.

glimpse(datos_xls)
Rows: 99
Columns: 5
$ id                <chr> "101", "102", "103", "104", "105", "106", "107", "10~
$ fecha_publicacion <chr> "2020-12-17T00:00:00Z", "2020-12-16T00:00:00Z", "202~
$ nombre            <chr> "Edificio Alba", "Deko", "Auki", "Tribeca", "Mon Rev~
$ tipo              <chr> "Departamentos", "Departamentos", "Departamentos", "~
$ vendedor          <chr> "CEP_EdificioAlba", "CEP_Deko", "METROEJECIA.LTDA.*"~
summary(datos_xls)
      id            fecha_publicacion     nombre              tipo          
 Length:99          Length:99          Length:99          Length:99         
 Class :character   Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character  
   vendedor        
 Length:99         
 Class :character  
 Mode  :character  

6. Importación de archivos desde internet

No siempre se cuentan con archivos guardados de forma local en el contexto del anƔlisis de datos. En muchas ocasiones, las tablas que necesitamos estan disponibles en pƔginas web y puede resultar laborioso el proceso de descargar, guardar y luego importar.

Para optimizar esto, todas las funciones que hemos visto hasta ahora de las librerías tidyverse y readxl, pueden automÔticamente importar directamente archivos desde pÔginas web especificando la dirección URL donde se encuentran.

Veamos unos cuantos de ejemplos:

datos_web1 <- read_delim(file = "https://raw.githubusercontent.com/jsaraujo5081/house_pricing/main/dataset.csv",
                         delim = ";",
                         col_names = TRUE)

-- Column specification --------------------------------------------------------
cols(
  Comuna = col_character(),
  Link = col_character(),
  Tipo_Vivienda = col_character(),
  N_Habitaciones = col_double(),
  N_Banos = col_double(),
  N_Estacionamientos = col_character(),
  Total_Superficie_M2 = col_double(),
  Superficie_Construida_M2 = col_character(),
  ` Valor_UF ` = col_double(),
  Valor_CLP = col_double(),
  Direccion = col_character(),
  Quien_Vende = col_character(),
  Corredor = col_character()
)

Veamos su estructura:

glimpse(datos_web1)
Rows: 1,139
Columns: 13
$ Comuna                   <chr> "Calera de Tango", "Calera de Tango", "Calera~
$ Link                     <chr> "https://chilepropiedades.cl/ver-publicacion/~
$ Tipo_Vivienda            <chr> "Casa", "Casa", "Casa", "Casa", "Casa", "Casa~
$ N_Habitaciones           <dbl> 5, 6, 3, 8, 3, 3, 3, 5, 5, 6, 7, 6, 3, 3, 3, ~
$ N_Banos                  <dbl> 6, 6, 3, 6, 2, 2, 2, 4, 3, 4, 5, 5, 1, 2, 2, ~
$ N_Estacionamientos       <chr> "3", "6", "No", "No", "3", "No", "4", "No", "~
$ Total_Superficie_M2      <dbl> 5000, 5000, 2027, 5000, 5000, 5000, 2600, 500~
$ Superficie_Construida_M2 <chr> "440", "430", "140", "480", "196", "170", "14~
$ ` Valor_UF `             <dbl> 12.200, 13.000, 10.300, 21.500, 9.100, 11.800~
$ Valor_CLP                <dbl> 351360000, 374400000, 296640000, 619200000, 2~
$ Direccion                <chr> "Calera de Tango, Queilen", "Calera de Tango,~
$ Quien_Vende              <chr> "Gabriela Mellado V.", "Gabriela Mellado V.",~
$ Corredor                 <chr> "Zenpro Propiedades", "Zenpro Propiedades", "~

Otro ejemplo con datos del departamento de estadĆ­sticas de los Estados Unidos:

datos_web2 <- read_csv(file = "https://www2.census.gov/programs-surveys/popest/datasets/2010-2019/counties/totals/co-est2019-alldata.csv",
                       col_names = TRUE)

-- Column specification --------------------------------------------------------
cols(
  .default = col_double(),
  SUMLEV = col_character(),
  STATE = col_character(),
  COUNTY = col_character(),
  STNAME = col_character(),
  CTYNAME = col_character()
)
i Use `spec()` for the full column specifications.

Veamos su estructura y un resumen estadĆ­stico

glimpse(datos_web2)
Rows: 3,193
Columns: 164
$ SUMLEV                <chr> "040", "050", "050", "050", "050", "050", "050",~
$ REGION                <dbl> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, ~
$ DIVISION              <dbl> 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, ~
$ STATE                 <chr> "01", "01", "01", "01", "01", "01", "01", "01", ~
$ COUNTY                <chr> "000", "001", "003", "005", "007", "009", "011",~
$ STNAME                <chr> "Alabama", "Alabama", "Alabama", "Alabama", "Ala~
$ CTYNAME               <chr> "Alabama", "Autauga County", "Baldwin County", "~
$ CENSUS2010POP         <dbl> 4779736, 54571, 182265, 27457, 22915, 57322, 109~
$ ESTIMATESBASE2010     <dbl> 4780125, 54597, 182265, 27455, 22915, 57322, 109~
$ POPESTIMATE2010       <dbl> 4785437, 54773, 183112, 27327, 22870, 57376, 108~
$ POPESTIMATE2011       <dbl> 4799069, 55227, 186558, 27341, 22745, 57560, 106~
$ POPESTIMATE2012       <dbl> 4815588, 54954, 190145, 27169, 22667, 57580, 106~
$ POPESTIMATE2013       <dbl> 4830081, 54727, 194885, 26937, 22521, 57619, 105~
$ POPESTIMATE2014       <dbl> 4841799, 54893, 199183, 26755, 22553, 57526, 106~
$ POPESTIMATE2015       <dbl> 4852347, 54864, 202939, 26283, 22566, 57526, 104~
$ POPESTIMATE2016       <dbl> 4863525, 55243, 207601, 25806, 22586, 57494, 103~
$ POPESTIMATE2017       <dbl> 4874486, 55390, 212521, 25157, 22550, 57787, 101~
$ POPESTIMATE2018       <dbl> 4887681, 55533, 217855, 24872, 22367, 57771, 101~
$ POPESTIMATE2019       <dbl> 4903185, 55869, 223234, 24686, 22394, 57826, 101~
$ NPOPCHG_2010          <dbl> 5312, 176, 847, -128, -45, 54, -35, -8, -118, -4~
$ NPOPCHG_2011          <dbl> 13632, 454, 3446, 14, -125, 184, -201, -66, -664~
$ NPOPCHG_2012          <dbl> 16519, -273, 3587, -172, -78, 20, -69, -196, -55~
$ NPOPCHG_2013          <dbl> 14493, -227, 4740, -232, -146, 39, -57, -314, -7~
$ NPOPCHG_2014          <dbl> 11718, 166, 4298, -182, 32, -93, 114, -29, -554,~
$ NPOPCHG_2015          <dbl> 10548, -29, 3756, -472, 13, 0, -263, -165, -448,~
$ NPOPCHG_2016          <dbl> 11178, 379, 4662, -477, 20, -32, -11, -150, -496~
$ NPOPCHG_2017          <dbl> 10961, 147, 4920, -649, -36, 293, -213, -124, -2~
$ NPOPCHG_2018          <dbl> 13195, 143, 5334, -285, -183, -16, -2, -257, -37~
$ NPOPCHG_2019          <dbl> 15504, 336, 5379, -186, 27, 55, -73, -183, -726,~
$ BIRTHS2010            <dbl> 14226, 150, 516, 71, 44, 184, 39, 65, 318, 83, 5~
$ BIRTHS2011            <dbl> 59690, 638, 2189, 331, 264, 744, 169, 274, 1385,~
$ BIRTHS2012            <dbl> 59067, 615, 2093, 300, 246, 712, 122, 240, 1356,~
$ BIRTHS2013            <dbl> 57929, 571, 2160, 282, 258, 647, 130, 241, 1309,~
$ BIRTHS2014            <dbl> 58903, 640, 2212, 264, 253, 619, 124, 251, 1315,~
$ BIRTHS2015            <dbl> 59647, 651, 2257, 271, 251, 716, 125, 239, 1388,~
$ BIRTHS2016            <dbl> 59389, 666, 2300, 276, 276, 700, 143, 230, 1382,~
$ BIRTHS2017            <dbl> 58961, 676, 2300, 280, 291, 660, 136, 244, 1324,~
$ BIRTHS2018            <dbl> 58271, 631, 2310, 263, 232, 679, 104, 216, 1299,~
$ BIRTHS2019            <dbl> 57313, 624, 2304, 256, 240, 651, 109, 213, 1269,~
$ DEATHS2010            <dbl> 11075, 157, 533, 131, 32, 131, 53, 66, 311, 80, ~
$ DEATHS2011            <dbl> 48833, 514, 1829, 323, 276, 569, 133, 264, 1325,~
$ DEATHS2012            <dbl> 48366, 560, 1885, 286, 236, 587, 116, 274, 1359,~
$ DEATHS2013            <dbl> 50851, 582, 1900, 295, 275, 583, 120, 262, 1410,~
$ DEATHS2014            <dbl> 49712, 573, 1987, 308, 247, 587, 115, 287, 1395,~
$ DEATHS2015            <dbl> 51876, 584, 2098, 332, 265, 633, 133, 276, 1455,~
$ DEATHS2016            <dbl> 51710, 547, 2022, 280, 241, 650, 130, 253, 1475,~
$ DEATHS2017            <dbl> 53195, 573, 2099, 295, 252, 721, 144, 269, 1393,~
$ DEATHS2018            <dbl> 53665, 518, 2312, 329, 263, 688, 92, 274, 1616, ~
$ DEATHS2019            <dbl> 53879, 541, 2326, 312, 252, 657, 109, 272, 1532,~
$ NATURALINC2010        <dbl> 3151, -7, -17, -60, 12, 53, -14, -1, 7, 3, -56, ~
$ NATURALINC2011        <dbl> 10857, 124, 360, 8, -12, 175, 36, 10, 60, -41, -~
$ NATURALINC2012        <dbl> 10701, 55, 208, 14, 10, 125, 6, -34, -3, -82, -8~
$ NATURALINC2013        <dbl> 7078, -11, 260, -13, -17, 64, 10, -21, -101, -49~
$ NATURALINC2014        <dbl> 9191, 67, 225, -44, 6, 32, 9, -36, -80, -29, -95~
$ NATURALINC2015        <dbl> 7771, 67, 159, -61, -14, 83, -8, -37, -67, -24, ~
$ NATURALINC2016        <dbl> 7679, 119, 278, -4, 35, 50, 13, -23, -93, -53, -~
$ NATURALINC2017        <dbl> 5766, 103, 201, -15, 39, -61, -8, -25, -69, -107~
$ NATURALINC2018        <dbl> 4606, 113, -2, -66, -31, -9, 12, -58, -317, -55,~
$ NATURALINC2019        <dbl> 3434, 83, -22, -56, -12, -6, 0, -59, -263, -87, ~
$ INTERNATIONALMIG2010  <dbl> 924, 25, 36, -1, 0, -2, 1, 0, -4, 6, 1, -2, 1, 1~
$ INTERNATIONALMIG2011  <dbl> 4665, 4, 177, -5, 10, -16, 17, 1, 26, 27, -2, 28~
$ INTERNATIONALMIG2012  <dbl> 5817, -14, 239, -12, 19, 5, 7, 6, 67, 31, 7, -3,~
$ INTERNATIONALMIG2013  <dbl> 5046, 12, 204, -10, 20, 45, 18, 7, 45, 29, 9, 11~
$ INTERNATIONALMIG2014  <dbl> 3684, 7, 113, 4, 14, 40, 6, 20, 66, 29, -1, 17, ~
$ INTERNATIONALMIG2015  <dbl> 4580, 13, 131, 13, 13, 13, 0, 27, 66, 14, -2, 29~
$ INTERNATIONALMIG2016  <dbl> 5777, -3, 180, 17, 14, 22, 8, 28, 102, 13, -2, 6~
$ INTERNATIONALMIG2017  <dbl> 3011, -12, 86, 12, 10, -1, 8, 22, 69, 7, -3, 18,~
$ INTERNATIONALMIG2018  <dbl> 3379, -7, 97, 12, 10, 5, 13, 17, 103, 6, -3, 35,~
$ INTERNATIONALMIG2019  <dbl> 2772, -16, 80, 13, 10, 6, -1, 18, 14, 6, -3, 35,~
$ DOMESTICMIG2010       <dbl> 1244, 147, 782, -69, -59, 9, -24, -4, -113, -54,~
$ DOMESTICMIG2011       <dbl> -1893, 327, 2899, 13, -124, 28, -254, -77, -752,~
$ DOMESTICMIG2012       <dbl> -114, -329, 3055, -176, -105, -100, -81, -170, -~
$ DOMESTICMIG2013       <dbl> 2297, -226, 4176, -210, -151, -65, -85, -304, -6~
$ DOMESTICMIG2014       <dbl> -959, 101, 3864, -142, 16, -158, 96, -11, -534, ~
$ DOMESTICMIG2015       <dbl> -1544, -107, 3433, -430, 17, -90, -259, -153, -4~
$ DOMESTICMIG2016       <dbl> -2157, 266, 4188, -492, -30, -102, -31, -154, -5~
$ DOMESTICMIG2017       <dbl> 2298, 59, 4619, -649, -83, 358, -213, -121, -259~
$ DOMESTICMIG2018       <dbl> 5279, 37, 5224, -231, -164, -9, -28, -216, -159,~
$ DOMESTICMIG2019       <dbl> 9387, 270, 5297, -141, 31, 59, -72, -141, -475, ~
$ NETMIG2010            <dbl> 2168, 172, 818, -70, -59, 7, -23, -4, -117, -48,~
$ NETMIG2011            <dbl> 2772, 331, 3076, 8, -114, 12, -237, -76, -726, -~
$ NETMIG2012            <dbl> 5703, -343, 3294, -188, -86, -95, -74, -164, -53~
$ NETMIG2013            <dbl> 7343, -214, 4380, -220, -131, -20, -67, -297, -6~
$ NETMIG2014            <dbl> 2725, 108, 3977, -138, 30, -118, 102, 9, -468, -~
$ NETMIG2015            <dbl> 3036, -94, 3564, -417, 30, -77, -259, -126, -372~
$ NETMIG2016            <dbl> 3620, 263, 4368, -475, -16, -80, -23, -126, -400~
$ NETMIG2017            <dbl> 5309, 47, 4705, -637, -73, 357, -205, -99, -190,~
$ NETMIG2018            <dbl> 8658, 30, 5321, -219, -154, -4, -15, -199, -56, ~
$ NETMIG2019            <dbl> 12159, 254, 5377, -128, 41, 65, -73, -123, -461,~
$ RESIDUAL2010          <dbl> -7, 11, 46, 2, 2, -6, 2, -3, -8, -2, -2, -4, 0, ~
$ RESIDUAL2011          <dbl> 3, -1, 10, -2, 1, -3, 0, 0, 2, -1, -2, 0, 1, -1,~
$ RESIDUAL2012          <dbl> 115, 15, 85, 2, -2, -10, -1, 2, -12, 0, -3, -3, ~
$ RESIDUAL2013          <dbl> 72, -2, 100, 1, 2, -5, 0, 4, -4, -2, -2, -4, 0, ~
$ RESIDUAL2014          <dbl> -198, -9, 96, 0, -4, -7, 3, -2, -6, -4, -6, -11,~
$ RESIDUAL2015          <dbl> -259, -2, 33, 6, -3, -6, 4, -2, -9, -2, -3, -2, ~
$ RESIDUAL2016          <dbl> -121, -3, 16, 2, 1, -2, -1, -1, -3, -2, -2, -2, ~
$ RESIDUAL2017          <dbl> -114, -3, 14, 3, -2, -3, 0, 0, -4, -3, -1, -2, 0~
$ RESIDUAL2018          <dbl> -69, 0, 15, 0, 2, -3, 1, 0, -6, -1, 1, -2, -1, -~
$ RESIDUAL2019          <dbl> -89, -1, 24, -2, -2, -4, 0, -1, -2, 0, 0, -2, 0,~
$ GQESTIMATESBASE2010   <dbl> 116185, 455, 2307, 3193, 2224, 489, 1690, 333, 2~
$ GQESTIMATES2010       <dbl> 116246, 455, 2307, 3193, 2224, 489, 1690, 333, 2~
$ GQESTIMATES2011       <dbl> 115180, 455, 2263, 3380, 2224, 489, 1690, 333, 2~
$ GQESTIMATES2012       <dbl> 115793, 455, 2240, 3390, 2228, 489, 1779, 333, 2~
$ GQESTIMATES2013       <dbl> 116932, 455, 2296, 3388, 2224, 489, 1717, 333, 2~
$ GQESTIMATES2014       <dbl> 119032, 455, 2331, 3352, 2245, 489, 1755, 333, 2~
$ GQESTIMATES2015       <dbl> 119972, 455, 2337, 3193, 2255, 489, 1660, 333, 2~
$ GQESTIMATES2016       <dbl> 118619, 455, 2275, 2975, 2204, 489, 1728, 333, 2~
$ GQESTIMATES2017       <dbl> 117094, 455, 2193, 2817, 2150, 489, 1660, 333, 2~
$ GQESTIMATES2018       <dbl> 116576, 455, 2170, 2813, 2146, 489, 1663, 333, 2~
$ GQESTIMATES2019       <dbl> 116625, 455, 2170, 2812, 2148, 489, 1663, 333, 2~
$ RBIRTH2011            <dbl> 12.455519, 11.600000, 11.842995, 12.109461, 11.5~
$ RBIRTH2012            <dbl> 12.286866, 11.163449, 11.112202, 11.007155, 10.8~
$ RBIRTH2013            <dbl> 12.011401, 10.412013, 11.219905, 10.423983, 11.4~
$ RBIRTH2014            <dbl> 12.180259, 11.676701, 11.226489, 9.833867, 11.22~
$ RBIRTH2015            <dbl> 12.305777, 11.862569, 11.225449, 10.219088, 11.1~
$ RBIRTH2016            <dbl> 12.225151, 12.097324, 11.204755, 10.597247, 12.2~
$ RBIRTH2017            <dbl> 12.109454, 12.220585, 10.949200, 10.988364, 12.8~
$ RBIRTH2018            <dbl> 11.938128, 11.377262, 10.734799, 10.513902, 10.3~
$ RBIRTH2019            <dbl> 11.707442, 11.202671, 10.446871, 10.331329, 10.7~
$ RDEATH2011            <dbl> 10.189988, 9.345455, 9.895312, 11.816785, 12.101~
$ RDEATH2012            <dbl> 10.060889, 10.165092, 10.007884, 10.493487, 10.3~
$ RDEATH2013            <dbl> 10.543800, 10.612595, 9.869361, 10.904521, 12.17~
$ RDEATH2014            <dbl> 10.279697, 10.454297, 10.084554, 11.472845, 10.9~
$ RDEATH2015            <dbl> 10.70254, 10.64169, 10.43464, 12.51933, 11.74671~
$ RDEATH2016            <dbl> 10.644438, 9.935790, 9.850441, 10.750830, 10.675~
$ RDEATH2017            <dbl> 10.925229, 10.358573, 9.992336, 11.577026, 11.16~
$ RDEATH2018            <dbl> 10.994485, 9.339812, 10.744094, 13.152372, 11.71~
$ RDEATH2019            <dbl> 11.005972, 9.712572, 10.546624, 12.591307, 11.25~
$ RNATURALINC2011       <dbl> 2.26553147, 2.25454545, 1.94768307, 0.29267579, ~
$ RNATURALINC2012       <dbl> 2.22597644, 0.99835725, 1.10431826, 0.51366722, ~
$ RNATURALINC2013       <dbl> 1.4676017, -0.2005817, 1.3505441, -0.4805382, -0~
$ RNATURALINC2014       <dbl> 1.9005612, 1.2224047, 1.1419349, -1.6389779, 0.2~
$ RNATURALINC2015       <dbl> 1.6032356, 1.2208789, 0.7908048, -2.3002376, -0.~
$ RNATURALINC2016       <dbl> 1.5807125, 2.1615338, 1.3543138, -0.1535833, 1.5~
$ RNATURALINC2017       <dbl> 1.1842254, 1.8620122, 0.9568649, -0.5886624, 1.7~
$ RNATURALINC2018       <dbl> 0.943642943, 2.037449402, -0.009294199, -2.63846~
$ RNATURALINC2019       <dbl> 0.70147013, 1.49009892, -0.09975311, -2.25997821~
$ RINTERNATIONALMIG2011 <dbl> 0.97344610, 0.07272727, 0.95761084, -0.18292237,~
$ RINTERNATIONALMIG2012 <dbl> 1.21002757, -0.25412730, 1.26890415, -0.44028619~
$ RINTERNATIONALMIG2013 <dbl> 1.04627268, 0.21881639, 1.05965769, -0.36964477,~
$ RINTERNATIONALMIG2014 <dbl> 0.76179605, 0.12771392, 0.57350508, 0.14899799, ~
$ RINTERNATIONALMIG2015 <dbl> 0.94490015, 0.23688694, 0.65154356, 0.49021456, ~
$ RINTERNATIONALMIG2016 <dbl> 1.18918817, -0.05449245, 0.87689385, 0.65272898,~
$ RINTERNATIONALMIG2017 <dbl> 0.61840144, -0.21693346, 0.40940489, 0.47092989,~
$ RINTERNATIONALMIG2018 <dbl> 0.69226433, -0.12621368, 0.45076863, 0.47972176,~
$ RINTERNATIONALMIG2019 <dbl> 0.56624205, -0.28724798, 0.36273859, 0.52463780,~
$ RDOMESTICMIG2011      <dbl> -0.39501253, 5.94545455, 15.68425893, 0.47559816~
$ RDOMESTICMIG2012      <dbl> -0.02371379, -5.97199154, 16.21967439, -6.457530~
$ RDOMESTICMIG2013      <dbl> 0.47627593, -4.12104193, 21.69181622, -7.7625402~
$ RDOMESTICMIG2014      <dbl> -0.1983068, 1.8427294, 19.6108286, -5.2894286, 0~
$ RDOMESTICMIG2015      <dbl> -0.3185428, -1.9497617, 17.0744202, -16.2147894,~
$ RDOMESTICMIG2016      <dbl> -0.44401573, 4.83166375, 20.40239684, -18.890744~
$ RDOMESTICMIG2017      <dbl> 0.4719650, 1.0665895, 21.9888509, -25.4694582, -~
$ RDOMESTICMIG2018      <dbl> 1.0815222, 0.6671295, 24.2764466, -9.2346439, -7~
$ RDOMESTICMIG2019      <dbl> 1.9175015, 4.8473097, 24.0178286, -5.6903023, 1.~
$ RNETMIG2011           <dbl> 0.5784336, 6.0181818, 16.6418698, 0.2926758, -4.~
$ RNETMIG2012           <dbl> 1.1863138, -6.2261188, 17.4885785, -6.8978169, -~
$ RNETMIG2013           <dbl> 1.5225486, -3.9022255, 22.7514739, -8.1321850, -~
$ RNETMIG2014           <dbl> 0.5634892, 1.9704433, 20.1843337, -5.1404306, 1.~
$ RNETMIG2015           <dbl> 0.6263574, -1.7128748, 17.7259638, -15.7245748, ~
$ RNETMIG2016           <dbl> 0.7451724, 4.7771713, 21.2792907, -18.2380157, -~
$ RNETMIG2017           <dbl> 1.0903664, 0.8496561, 22.3982557, -24.9985283, -~
$ RNETMIG2018           <dbl> 1.77378650, 0.54091577, 24.72721527, -8.75492215~
$ RNETMIG2019           <dbl> 2.4837435, 4.5600618, 24.3805672, -5.1656645, 1.~
summary(datos_web2)
    SUMLEV              REGION         DIVISION        STATE          
 Length:3193        Min.   :1.000   Min.   :1.000   Length:3193       
 Class :character   1st Qu.:2.000   1st Qu.:4.000   Class :character  
 Mode  :character   Median :3.000   Median :5.000   Mode  :character  
                    Mean   :2.669   Mean   :5.191                     
                    3rd Qu.:3.000   3rd Qu.:7.000                     
                    Max.   :4.000   Max.   :9.000                     
    COUNTY             STNAME            CTYNAME          CENSUS2010POP     
 Length:3193        Length:3193        Length:3193        Min.   :      82  
 Class :character   Class :character   Class :character   1st Qu.:   11299  
 Mode  :character   Mode  :character   Mode  :character   Median :   26424  
                                                          Mean   :  193387  
                                                          3rd Qu.:   71404  
                                                          Max.   :37253956  
 ESTIMATESBASE2010  POPESTIMATE2010    POPESTIMATE2011    POPESTIMATE2012   
 Min.   :      82   Min.   :      84   Min.   :      90   Min.   :      86  
 1st Qu.:   11296   1st Qu.:   11275   1st Qu.:   11257   1st Qu.:   11200  
 Median :   26405   Median :   26464   Median :   26422   Median :   26373  
 Mean   :  193397   Mean   :  193750   Mean   :  195150   Mean   :  196574  
 3rd Qu.:   71485   3rd Qu.:   71673   3rd Qu.:   72332   3rd Qu.:   72235  
 Max.   :37254519   Max.   :37319502   Max.   :37638369   Max.   :37948800  
 POPESTIMATE2013    POPESTIMATE2014    POPESTIMATE2015    POPESTIMATE2016   
 Min.   :      89   Min.   :      89   Min.   :      88   Min.   :      88  
 1st Qu.:   11154   1st Qu.:   11095   1st Qu.:   11136   1st Qu.:   11167  
 Median :   26421   Median :   26430   Median :   26342   Median :   26345  
 Mean   :  197929   Mean   :  199374   Mean   :  200836   Mean   :  202281  
 3rd Qu.:   72322   3rd Qu.:   72458   3rd Qu.:   72413   3rd Qu.:   72053  
 Max.   :38260787   Max.   :38596972   Max.   :38918045   Max.   :39167117  
 POPESTIMATE2017    POPESTIMATE2018    POPESTIMATE2019     NPOPCHG_2010  
 Min.   :      86   Min.   :      86   Min.   :      86   Min.   :-6606  
 1st Qu.:   11121   1st Qu.:   11117   1st Qu.:   11128   1st Qu.:  -17  
 Median :   26443   Median :   26491   Median :   26516   Median :   10  
 Mean   :  203561   Mean   :  204627   Mean   :  205599   Mean   :  353  
 3rd Qu.:   72490   3rd Qu.:   73127   3rd Qu.:   73309   3rd Qu.:   86  
 Max.   :39358497   Max.   :39461588   Max.   :39512223   Max.   :95880  
  NPOPCHG_2011     NPOPCHG_2012     NPOPCHG_2013     NPOPCHG_2014   
 Min.   :-11892   Min.   : -7260   Min.   :-15704   Min.   :-10636  
 1st Qu.:   -93   1st Qu.:  -122   1st Qu.:  -111   1st Qu.:  -103  
 Median :     1   Median :   -13   Median :    -7   Median :    -4  
 Mean   :  1400   Mean   :  1424   Mean   :  1355   Mean   :  1445  
 3rd Qu.:   240   3rd Qu.:   212   3rd Qu.:   198   3rd Qu.:   217  
 Max.   :403658   Max.   :438852   Max.   :395785   Max.   :484067  
  NPOPCHG_2015     NPOPCHG_2016     NPOPCHG_2017     NPOPCHG_2018   
 Min.   :-25580   Min.   :-38386   Min.   :-43856   Min.   :-59221  
 1st Qu.:  -110   1st Qu.:  -104   1st Qu.:   -99   1st Qu.:   -88  
 Median :    -5   Median :     2   Median :    15   Median :    12  
 Mean   :  1462   Mean   :  1444   Mean   :  1280   Mean   :  1066  
 3rd Qu.:   233   3rd Qu.:   264   3rd Qu.:   293   3rd Qu.:   301  
 Max.   :505723   Max.   :444354   Max.   :380863   Max.   :333393  
  NPOPCHG_2019        BIRTHS2010         BIRTHS2011       BIRTHS2012    
 Min.   :-76790.0   Min.   :     0.0   Min.   :     0   Min.   :     0  
 1st Qu.:   -96.0   1st Qu.:    31.0   1st Qu.:   129   1st Qu.:   127  
 Median :     7.0   Median :    78.0   Median :   313   Median :   312  
 Mean   :   972.1   Mean   :   618.8   Mean   :  2489   Mean   :  2466  
 3rd Qu.:   256.0   3rd Qu.:   216.0   3rd Qu.:   857   3rd Qu.:   839  
 Max.   :367215.0   Max.   :123327.0   Max.   :509771   Max.   :497451  
   BIRTHS2013       BIRTHS2014       BIRTHS2015       BIRTHS2016    
 Min.   :     0   Min.   :     0   Min.   :     0   Min.   :     0  
 1st Qu.:   126   1st Qu.:   130   1st Qu.:   127   1st Qu.:   124  
 Median :   308   Median :   312   Median :   311   Median :   306  
 Mean   :  2468   Mean   :  2482   Mean   :  2501   Mean   :  2482  
 3rd Qu.:   838   3rd Qu.:   850   3rd Qu.:   843   3rd Qu.:   839  
 Max.   :499629   Max.   :498914   Max.   :500380   Max.   :490358  
   BIRTHS2017       BIRTHS2018       BIRTHS2019       DEATHS2010   
 Min.   :     0   Min.   :     0   Min.   :     0   Min.   :    0  
 1st Qu.:   123   1st Qu.:   120   1st Qu.:   119   1st Qu.:   26  
 Median :   301   Median :   297   Median :   292   Median :   68  
 Mean   :  2444   Mean   :  2396   Mean   :  2375   Mean   :  375  
 3rd Qu.:   834   3rd Qu.:   820   3rd Qu.:   807   3rd Qu.:  161  
 Max.   :481943   Max.   :465017   Max.   :462617   Max.   :57319  
   DEATHS2011       DEATHS2012       DEATHS2013       DEATHS2014    
 Min.   :     0   Min.   :     1   Min.   :     0   Min.   :     0  
 1st Qu.:   124   1st Qu.:   122   1st Qu.:   125   1st Qu.:   124  
 Median :   274   Median :   271   Median :   283   Median :   283  
 Mean   :  1574   Mean   :  1567   Mean   :  1634   Mean   :  1618  
 3rd Qu.:   675   3rd Qu.:   670   3rd Qu.:   702   3rd Qu.:   688  
 Max.   :238388   Max.   :239535   Max.   :247704   Max.   :244055  
   DEATHS2015       DEATHS2016       DEATHS2017       DEATHS2018    
 Min.   :     1   Min.   :     0   Min.   :     2   Min.   :     0  
 1st Qu.:   131   1st Qu.:   129   1st Qu.:   133   1st Qu.:   121  
 Median :   290   Median :   291   Median :   300   Median :   291  
 Mean   :  1691   Mean   :  1693   Mean   :  1746   Mean   :  1769  
 3rd Qu.:   713   3rd Qu.:   728   3rd Qu.:   739   3rd Qu.:   743  
 Max.   :253798   Max.   :260121   Max.   :265241   Max.   :277578  
   DEATHS2019     NATURALINC2010    NATURALINC2011     NATURALINC2012    
 Min.   :     0   Min.   : -760.0   Min.   : -2891.0   Min.   : -2744.0  
 1st Qu.:   122   1st Qu.:   -7.0   1st Qu.:   -15.0   1st Qu.:   -14.0  
 Median :   289   Median :   13.0   Median :    23.0   Median :    24.0  
 Mean   :  1776   Mean   :  243.8   Mean   :   915.1   Mean   :   899.1  
 3rd Qu.:   744   3rd Qu.:   60.0   3rd Qu.:   191.0   3rd Qu.:   187.0  
 Max.   :282520   Max.   :66008.0   Max.   :271383.0   Max.   :257916.0  
 NATURALINC2013     NATURALINC2014     NATURALINC2015     NATURALINC2016    
 Min.   : -3121.0   Min.   : -2697.0   Min.   : -3210.0   Min.   : -3048.0  
 1st Qu.:   -22.0   1st Qu.:   -18.0   1st Qu.:   -25.0   1st Qu.:   -25.0  
 Median :    14.0   Median :    18.0   Median :    10.0   Median :    10.0  
 Mean   :   834.7   Mean   :   864.9   Mean   :   809.6   Mean   :   788.9  
 3rd Qu.:   162.0   3rd Qu.:   172.0   3rd Qu.:   150.0   3rd Qu.:   143.0  
 Max.   :251925.0   Max.   :254859.0   Max.   :246582.0   Max.   :230237.0  
 NATURALINC2017     NATURALINC2018     NATURALINC2019     INTERNATIONALMIG2010
 Min.   : -4272.0   Min.   : -4571.0   Min.   : -4729.0   Min.   : -114.0     
 1st Qu.:   -33.0   1st Qu.:   -30.0   1st Qu.:   -33.0   1st Qu.:    0.0     
 Median :     3.0   Median :     7.0   Median :     5.0   Median :    2.0     
 Mean   :   697.7   Mean   :   626.5   Mean   :   599.2   Mean   :  109.2     
 3rd Qu.:   115.0   3rd Qu.:   104.0   3rd Qu.:   103.0   3rd Qu.:   12.0     
 Max.   :216702.0   Max.   :187439.0   Max.   :180097.0   Max.   :22164.0     
 INTERNATIONALMIG2011 INTERNATIONALMIG2012 INTERNATIONALMIG2013
 Min.   :  -361.0     Min.   : -348.0      Min.   :  -126      
 1st Qu.:     0.0     1st Qu.:    0.0      1st Qu.:     0      
 Median :     8.0     Median :    8.0      Median :     9      
 Mean   :   484.9     Mean   :  525.3      Mean   :   520      
 3rd Qu.:    49.0     3rd Qu.:   54.0      3rd Qu.:    61      
 Max.   :100548.0     Max.   :98777.0      Max.   :116528      
 INTERNATIONALMIG2014 INTERNATIONALMIG2015 INTERNATIONALMIG2016
 Min.   :  -262.0     Min.   :  -148.0     Min.   :  -165.0    
 1st Qu.:     0.0     1st Qu.:     1.0     1st Qu.:     1.0    
 Median :     9.0     Median :    11.0     Median :    12.0    
 Mean   :   580.4     Mean   :   652.4     Mean   :   655.6    
 3rd Qu.:    64.0     3rd Qu.:    76.0     3rd Qu.:    77.0    
 Max.   :131001.0     Max.   :156870.0     Max.   :155926.0    
 INTERNATIONALMIG2017 INTERNATIONALMIG2018 INTERNATIONALMIG2019
 Min.   :  -209.0     Min.   :  -992.0     Min.   : -970.0     
 1st Qu.:     1.0     1st Qu.:     0.0     1st Qu.:    0.0     
 Median :     9.0     Median :     6.0     Median :    5.0     
 Mean   :   582.8     Mean   :   439.6     Mean   :  372.9     
 3rd Qu.:    58.0     3rd Qu.:    42.0     3rd Qu.:   36.0     
 Max.   :160385.0     Max.   :131600.0     Max.   :88678.0     
 DOMESTICMIG2010  DOMESTICMIG2011  DOMESTICMIG2012   DOMESTICMIG2013  
 Min.   :-22616   Min.   :-80582   Min.   :-108406   Min.   :-112483  
 1st Qu.:   -32   1st Qu.:  -156   1st Qu.:   -204   1st Qu.:   -171  
 Median :    -1   Median :   -33   Median :    -58   Median :    -35  
 Mean   :     0   Mean   :     0   Mean   :      0   Mean   :      0  
 3rd Qu.:    27   3rd Qu.:    65   3rd Qu.:     46   3rd Qu.:     67  
 Max.   : 28097   Max.   :120672   Max.   : 141740   Max.   : 111585  
 DOMESTICMIG2014   DOMESTICMIG2015   DOMESTICMIG2016   DOMESTICMIG2017  
 Min.   :-145432   Min.   :-165857   Min.   :-194013   Min.   :-187910  
 1st Qu.:   -170   1st Qu.:   -170   1st Qu.:   -172   1st Qu.:   -147  
 Median :    -35   Median :    -37   Median :    -28   Median :     -8  
 Mean   :      0   Mean   :      0   Mean   :      0   Mean   :      0  
 3rd Qu.:     72   3rd Qu.:     76   3rd Qu.:    111   3rd Qu.:    180  
 Max.   : 160260   Max.   : 197401   Max.   : 216749   Max.   : 164257  
 DOMESTICMIG2018   DOMESTICMIG2019     NETMIG2010         NETMIG2011      
 Min.   :-181262   Min.   :-203414   Min.   :-15150.0   Min.   :-33876.0  
 1st Qu.:   -129   1st Qu.:   -132   1st Qu.:   -24.0   1st Qu.:  -126.0  
 Median :     -9   Median :    -14   Median :     2.0   Median :   -16.0  
 Mean   :      0   Mean   :      0   Mean   :   109.2   Mean   :   484.9  
 3rd Qu.:    163   3rd Qu.:    155   3rd Qu.:    36.0   3rd Qu.:   106.0  
 Max.   : 135530   Max.   : 133910   Max.   : 42957.0   Max.   :189731.0  
   NETMIG2012         NETMIG2013       NETMIG2014         NETMIG2015      
 Min.   :-43686.0   Min.   :-40418   Min.   :-65886.0   Min.   :-82040.0  
 1st Qu.:  -166.0   1st Qu.:  -135   1st Qu.:  -137.0   1st Qu.:  -128.0  
 Median :   -36.0   Median :   -20   Median :   -18.0   Median :   -15.0  
 Mean   :   525.3   Mean   :   520   Mean   :   580.4   Mean   :   652.4  
 3rd Qu.:    87.0   3rd Qu.:   106   3rd Qu.:   109.0   3rd Qu.:   127.0  
 Max.   :226699.0   Max.   :215179   Max.   :267305.0   Max.   :330283.0  
   NETMIG2016          NETMIG2017          NETMIG2018       
 Min.   :-105667.0   Min.   :-120168.0   Min.   :-125303.0  
 1st Qu.:   -131.0   1st Qu.:   -112.0   1st Qu.:   -106.0  
 Median :    -10.0   Median :      8.0   Median :      3.0  
 Mean   :    655.6   Mean   :    582.8   Mean   :    439.6  
 3rd Qu.:    169.0   3rd Qu.:    239.0   3rd Qu.:    224.0  
 Max.   : 372675.0   Max.   : 324642.0   Max.   : 267130.0  
   NETMIG2019         RESIDUAL2010    RESIDUAL2011   RESIDUAL2012  
 Min.   :-134896.0   Min.   :-1358   Min.   :-369   Min.   :-3987  
 1st Qu.:   -113.0   1st Qu.:   -3   1st Qu.:  -1   1st Qu.:   -4  
 Median :     -2.0   Median :   -1   Median :   0   Median :    0  
 Mean   :    372.9   Mean   :    0   Mean   :   0   Mean   :    0  
 3rd Qu.:    186.0   3rd Qu.:    1   3rd Qu.:   1   3rd Qu.:    4  
 Max.   : 222588.0   Max.   : 2014   Max.   : 344   Max.   : 3241  
  RESIDUAL2013    RESIDUAL2014    RESIDUAL2015    RESIDUAL2016   RESIDUAL2017 
 Min.   :-2774   Min.   :-3354   Min.   :-2441   Min.   :-688   Min.   :-590  
 1st Qu.:   -3   1st Qu.:   -4   1st Qu.:   -3   1st Qu.:  -2   1st Qu.:  -2  
 Median :    0   Median :    0   Median :   -1   Median :   0   Median :   0  
 Mean   :    0   Mean   :    0   Mean   :    0   Mean   :   0   Mean   :   0  
 3rd Qu.:    2   3rd Qu.:    2   3rd Qu.:    1   3rd Qu.:   1   3rd Qu.:   1  
 Max.   : 2509   Max.   : 3153   Max.   : 2178   Max.   : 780   Max.   : 733  
  RESIDUAL2018   RESIDUAL2019  GQESTIMATESBASE2010 GQESTIMATES2010 
 Min.   :-514   Min.   :-628   Min.   :     0      Min.   :     0  
 1st Qu.:  -2   1st Qu.:  -2   1st Qu.:   183      1st Qu.:   183  
 Median :   0   Median :   0   Median :   636      Median :   635  
 Mean   :   0   Mean   :   0   Mean   :  5010      Mean   :  5032  
 3rd Qu.:   1   3rd Qu.:   1   3rd Qu.:  2408      3rd Qu.:  2419  
 Max.   : 575   Max.   : 829   Max.   :820359      Max.   :818897  
 GQESTIMATES2011  GQESTIMATES2012  GQESTIMATES2013  GQESTIMATES2014 
 Min.   :     0   Min.   :     0   Min.   :     0   Min.   :     0  
 1st Qu.:   183   1st Qu.:   184   1st Qu.:   180   1st Qu.:   181  
 Median :   637   Median :   645   Median :   640   Median :   642  
 Mean   :  5050   Mean   :  5063   Mean   :  5052   Mean   :  5076  
 3rd Qu.:  2426   3rd Qu.:  2422   3rd Qu.:  2414   3rd Qu.:  2455  
 Max.   :816262   Max.   :816845   Max.   :807615   Max.   :817753  
 GQESTIMATES2015  GQESTIMATES2016  GQESTIMATES2017  GQESTIMATES2018 
 Min.   :     0   Min.   :     0   Min.   :     0   Min.   :     0  
 1st Qu.:   181   1st Qu.:   178   1st Qu.:   177   1st Qu.:   178  
 Median :   637   Median :   637   Median :   639   Median :   640  
 Mean   :  5077   Mean   :  5066   Mean   :  5068   Mean   :  5066  
 3rd Qu.:  2441   3rd Qu.:  2428   3rd Qu.:  2426   3rd Qu.:  2421  
 Max.   :820530   Max.   :813594   Max.   :819850   Max.   :825817  
 GQESTIMATES2019    RBIRTH2011      RBIRTH2012       RBIRTH2013   
 Min.   :     0   Min.   : 0.00   Min.   : 0.000   Min.   : 0.00  
 1st Qu.:   179   1st Qu.:10.07   1st Qu.: 9.972   1st Qu.:10.04  
 Median :   637   Median :11.55   Median :11.457   Median :11.49  
 Mean   :  5064   Mean   :11.76   Mean   :11.652   Mean   :11.66  
 3rd Qu.:  2421   3rd Qu.:13.08   3rd Qu.:13.013   3rd Qu.:12.97  
 Max.   :826521   Max.   :32.28   Max.   :31.208   Max.   :29.34  
   RBIRTH2014      RBIRTH2015      RBIRTH2016      RBIRTH2017    
 Min.   : 0.00   Min.   : 0.00   Min.   : 0.00   Min.   : 0.000  
 1st Qu.:10.09   1st Qu.:10.18   1st Qu.:10.13   1st Qu.: 9.936  
 Median :11.54   Median :11.57   Median :11.50   Median :11.327  
 Mean   :11.71   Mean   :11.76   Mean   :11.68   Mean   :11.465  
 3rd Qu.:13.07   3rd Qu.:13.07   3rd Qu.:12.88   3rd Qu.:12.747  
 Max.   :29.36   Max.   :30.41   Max.   :29.04   Max.   :28.490  
   RBIRTH2018       RBIRTH2019      RDEATH2011      RDEATH2012     
 Min.   : 0.000   Min.   : 0.00   Min.   : 0.00   Min.   : 0.7943  
 1st Qu.: 9.707   1st Qu.: 9.54   1st Qu.: 8.37   1st Qu.: 8.2859  
 Median :11.059   Median :10.91   Median :10.13   Median :10.0531  
 Mean   :11.155   Mean   :11.00   Mean   :10.16   Mean   :10.0873  
 3rd Qu.:12.366   3rd Qu.:12.16   3rd Qu.:11.87   3rd Qu.:11.8083  
 Max.   :28.538   Max.   :28.19   Max.   :24.94   Max.   :22.5724  
   RDEATH2013       RDEATH2014       RDEATH2015       RDEATH2016    
 Min.   : 0.000   Min.   : 0.000   Min.   : 1.061   Min.   : 0.000  
 1st Qu.: 8.631   1st Qu.: 8.497   1st Qu.: 8.897   1st Qu.: 8.856  
 Median :10.482   Median :10.348   Median :10.804   Median :10.804  
 Mean   :10.476   Mean   :10.356   Mean   :10.765   Mean   :10.728  
 3rd Qu.:12.278   3rd Qu.:12.204   3rd Qu.:12.588   3rd Qu.:12.584  
 Max.   :25.282   Max.   :24.837   Max.   :25.403   Max.   :34.359  
   RDEATH2017       RDEATH2018       RDEATH2019     RNATURALINC2011  
 Min.   : 1.785   Min.   : 0.000   Min.   : 0.000   Min.   :-15.642  
 1st Qu.: 9.074   1st Qu.: 8.723   1st Qu.: 8.721   1st Qu.: -1.203  
 Median :11.096   Median :10.496   Median :10.434   Median :  1.303  
 Mean   :11.032   Mean   :10.359   Mean   :10.383   Mean   :  1.599  
 3rd Qu.:12.871   3rd Qu.:12.194   3rd Qu.:12.175   3rd Qu.:  4.086  
 Max.   :26.492   Max.   :25.561   Max.   :22.102   Max.   : 24.214  
 RNATURALINC2012   RNATURALINC2013    RNATURALINC2014   RNATURALINC2015   
 Min.   :-16.688   Min.   :-18.4489   Min.   :-17.962   Min.   :-17.1404  
 1st Qu.: -1.122   1st Qu.: -1.5476   1st Qu.: -1.432   1st Qu.: -1.7674  
 Median :  1.292   Median :  0.8713   Median :  1.019   Median :  0.5786  
 Mean   :  1.564   Mean   :  1.1794   Mean   :  1.357   Mean   :  0.9956  
 3rd Qu.:  4.046   3rd Qu.:  3.6162   3rd Qu.:  3.737   3rd Qu.:  3.4345  
 Max.   : 24.772   Max.   : 26.0144   Max.   : 25.826   Max.   : 27.0658  
 RNATURALINC2016    RNATURALINC2017    RNATURALINC2018    RNATURALINC2019   
 Min.   :-24.3379   Min.   :-24.0000   Min.   :-15.4302   Min.   :-13.5405  
 1st Qu.: -1.7629   1st Qu.: -2.2918   1st Qu.: -1.7496   1st Qu.: -1.9098  
 Median :  0.5989   Median :  0.1995   Median :  0.4970   Median :  0.3771  
 Mean   :  0.9475   Mean   :  0.4331   Mean   :  0.7966   Mean   :  0.6143  
 3rd Qu.:  3.3812   3rd Qu.:  2.8911   3rd Qu.:  2.9400   3rd Qu.:  2.7642  
 Max.   : 24.5579   Max.   : 24.9930   Max.   : 25.0029   Max.   : 24.4291  
 RINTERNATIONALMIG2011 RINTERNATIONALMIG2012 RINTERNATIONALMIG2013
 Min.   :-2.0429       Min.   :-1.8182       Min.   :-1.5252      
 1st Qu.: 0.0000       1st Qu.: 0.0000       1st Qu.: 0.0000      
 Median : 0.3434       Median : 0.3555       Median : 0.4132      
 Mean   : 0.8781       Mean   : 0.9978       Mean   : 0.9856      
 3rd Qu.: 1.1252       3rd Qu.: 1.1987       3rd Qu.: 1.2709      
 Max.   :25.8366       Max.   :42.6835       Max.   :28.2895      
 RINTERNATIONALMIG2014 RINTERNATIONALMIG2015 RINTERNATIONALMIG2016
 Min.   :-1.7911       Min.   :-2.20204      Min.   :-1.67785     
 1st Qu.: 0.0000       1st Qu.: 0.06631      1st Qu.: 0.08247     
 Median : 0.4383       Median : 0.53562      Median : 0.55443     
 Mean   : 1.0528       Mean   : 1.24337      Mean   : 1.26020     
 3rd Qu.: 1.3238       3rd Qu.: 1.53425      3rd Qu.: 1.50681     
 Max.   :25.1429       Max.   :31.53457      Max.   :43.48905     
 RINTERNATIONALMIG2017 RINTERNATIONALMIG2018 RINTERNATIONALMIG2019
 Min.   :-1.67177      Min.   :-2.8471       Min.   :-1.7356      
 1st Qu.: 0.02412      1st Qu.: 0.0000       1st Qu.: 0.0000      
 Median : 0.43145      Median : 0.2816       Median : 0.2300      
 Mean   : 1.08652      Mean   : 0.7577       Mean   : 0.6493      
 3rd Qu.: 1.25000      3rd Qu.: 0.9165       3rd Qu.: 0.7889      
 Max.   :34.61426      Max.   :26.6688       Max.   :26.0417      
 RDOMESTICMIG2011   RDOMESTICMIG2012   RDOMESTICMIG2013   RDOMESTICMIG2014  
 Min.   :-124.542   Min.   :-100.717   Min.   :-110.730   Min.   :-174.359  
 1st Qu.:  -6.168   1st Qu.:  -7.666   1st Qu.:  -6.677   1st Qu.:  -7.139  
 Median :  -1.772   Median :  -2.661   Median :  -1.925   Median :  -2.033  
 Mean   :  -1.691   Mean   :  -2.663   Mean   :  -1.656   Mean   :  -1.880  
 3rd Qu.:   2.650   3rd Qu.:   2.393   3rd Qu.:   3.153   3rd Qu.:   3.286  
 Max.   : 122.905   Max.   : 119.421   Max.   : 208.333   Max.   : 149.973  
 RDOMESTICMIG2015  RDOMESTICMIG2016   RDOMESTICMIG2017    RDOMESTICMIG2018   
 Min.   :-99.217   Min.   :-124.710   Min.   :-432.8903   Min.   :-73.67214  
 1st Qu.: -7.246   1st Qu.:  -7.384   1st Qu.:  -6.5629   1st Qu.: -6.24056  
 Median : -2.076   Median :  -1.749   Median :  -0.4755   Median : -0.53346  
 Mean   : -1.683   Mean   :  -1.355   Mean   :  -0.2737   Mean   : -0.04087  
 3rd Qu.:  3.790   3rd Qu.:   4.544   3rd Qu.:   6.6725   3rd Qu.:  6.06691  
 Max.   :278.846   Max.   : 208.819   Max.   : 152.0000   Max.   : 71.17438  
 RDOMESTICMIG2019     RNETMIG2011         RNETMIG2012       RNETMIG2013      
 Min.   :-165.2510   Min.   :-124.5421   Min.   :-99.448   Min.   :-99.6057  
 1st Qu.:  -5.9771   1st Qu.:  -5.6820   1st Qu.: -7.064   1st Qu.: -5.9886  
 Median :  -0.7582   Median :  -0.8585   Median : -1.777   Median : -1.0367  
 Mean   :  -0.3591   Mean   :  -0.8127   Mean   : -1.665   Mean   : -0.6705  
 3rd Qu.:   5.3982   3rd Qu.:   3.8429   3rd Qu.:  3.480   3rd Qu.:  4.2443  
 Max.   : 126.1830   Max.   : 122.9050   Max.   :119.154   Max.   :208.3333  
  RNETMIG2014         RNETMIG2015        RNETMIG2016        
 Min.   :-174.3590   Min.   :-76.5239   Min.   :-110.29447  
 1st Qu.:  -6.2206   1st Qu.: -6.0288   1st Qu.:  -6.22554  
 Median :  -1.1219   Median : -0.9382   Median :  -0.65151  
 Mean   :  -0.8275   Mean   : -0.4394   Mean   :  -0.09467  
 3rd Qu.:   4.3103   3rd Qu.:  5.0226   3rd Qu.:   5.95338  
 Max.   : 149.8741   Max.   :278.8462   Max.   : 208.59713  
  RNETMIG2017         RNETMIG2018        RNETMIG2019       
 Min.   :-422.6669   Min.   :-74.1226   Min.   :-165.3853  
 1st Qu.:  -5.4549   1st Qu.: -5.5229   1st Qu.:  -5.3541  
 Median :   0.5187   Median :  0.2595   Median :  -0.1294  
 Mean   :   0.8128   Mean   :  0.7168   Mean   :   0.2902  
 3rd Qu.:   7.5439   3rd Qu.:  6.5807   3rd Qu.:   5.9360  
 Max.   : 152.0000   Max.   : 71.1744   Max.   : 126.1830  
LS0tDQp0aXRsZTogIkltcG9ydGFjacOzbiBkZSBEYXRvcyBlbiBSIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KRWwgcHJpbWVyIHBhc28gcGFyYSBlamVjdXRhciBhbsOhbGlzaXMgZGUgZGF0b3MgZW4gUiAobyBlbiBjdWFscXVpZXIgb3RybyBlbnRvcm5vIHNpbWlsYXIpLCBlcyBsYSBpbXBvcnRhY2nDs24gZGUgbGFzIHRhYmxhcyBkZSBkYXRvcyBxdWUgc2UgdmEgYSB1dGlsaXphci4gDQoNCkNvbiBlc3RvIGVuIG1lbnRlLCBzZSBkZWJlIHRlbmVyIGVuIGN1ZW50YSBxdWUgZGljaGFzIHRhYmxhcyBzZSBwdWVkZW4gcHJlc2VudGFyIGVuIGRpdmVyc29zIGZvcm1hdG9zLCBwb3IgbG8gcXVlIGEgc3UgdmV6IHNlIHJlcXVpZXJlbiBkZSBkaWZlcmVudGVzIG3DqXRvZG9zIGRlIGltcG9ydGFjacOzbi4gQWwgcmVzcGVjdG8sIGxvcyBwcmluY2lwYWxlcyBkZSBlc3RvcyBmb3JtYXRvcyBzb246DQoNCiogQXJjaGl2b3MgcGxhbm9zIChYTUwgbyB0ZXh0bykNCiogQXJjaGl2b3Mgc2VwYXJhZG9zIHBvciBjb21hcyAoQ1NWKQ0KKiBBcmNoaXZvcyBjb24gaG9qYXMgZGUgY8OhbGN1bG8gKFhMUyBvIFhMU1gpDQoqIFZpc3RhcyBlbiBiYXNlcyBkZSBkYXRvcyAoU1FMKQ0KDQpFc3RlIHRpcG8gZGUgYXJjaGl2b3MgYWRlbcOhcywgcHVlZGVuIGVzdGFyIHViaWNhZG9zIGVuIHVuIHJlcG9zaXRvcmlvIGxvY2FsLCBlbiB1bmEgaGVycmFtaWVudGEgZGUgZ2VzdGnDs24gZGUgZGF0b3MgbyBlbiB1bmEgcMOhZ2luYSB3ZWIuDQoNClBhcmEgYXRlbmRlciB0b2RhcyBlc3RhcyBuZWNlc2lkYWRlcyAoeSBvdHJhcyBxdWUgeWEgdmVyZW1vcyBtw6FzIGFkZWxhbnRlKSwgUiBwb3NlZSB1bmEgbGlicmVyw61hIGVzcGVjaWFsaXphZGEgbGxhbWFkYSAqKnRpZHl2ZXJzZSoqLg0KDQojIyAxLiBJbnN0YWxhY2nDs24geSBhY3RpdmFjacOzbiBkZWwgdGlkeXZlcnNlDQoNCkVqZWN1dGUgZWwgc2lndWllbnRlIGNvbWFuZG8gZW4gc3UgY29uc29sYSBwYXJhIGluc3RhbGFyIHBvciBwcmltZXJhIHZleiBlbCAqKnRpZHl2ZXJzZSoqOg0KYGBge3J9DQppbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKQ0KYGBgDQoNCkVzcGVyZSBtaWVudHJhcyBSIFN0dWRpbyBidXNjYSBlbiBsb3MgcmVwb3NpdG9yaW9zIGRlIGludGVybmV0IGxhIGxpYnJlcsOtYSB5IGxhIGluc3RhbGEuDQoNClVuYSB2ZXogaW5zdGFsYWRhLCB1bmEgbGlicmVyw61hIHB1ZWRlIHNlciBjYXJnYWRhIGVqZWN1dGFuZG8gZWwgc2lndWllbnRlIGNvbWFuZG86DQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KYGBgDQpFcyBpbXBvcnRhbnRlIHNlw7FhbGFyIHF1ZSB1bmEgdmV6IHF1ZSBzZSBoYSBpbnN0YWxhZG8gdW5hIGxpYnJlcsOtYSwgbGEgbWlzbWEgcXVlZGEgeWEgZ3VhcmRhZGEgZW4gUiwgeSBwdWVkZSBjYXJnYXJzZSBzaWVtcHJlIGVuIGN1YWxxdWllciBzY3JpcHQuDQoNCkFob3JhIGJpZW4sIHVuYSB2ZXogY2FyZ2FkYSwgcHVlZGUgdmVyaWZpY2FyIHF1ZSBsYSBsaWJyZXLDrWEgKip0aWR5dmVyc2UqKiBlc3TDoSBhY3RpdmEgZW4gbGEgc2VzacOzbiBlamVjdXRhbmRvIGVsIHNpZ3VpZW50ZSBjb21hbmRvIHF1ZSBwZXJtaXRlIHZpc3VhbGl6YXIgdG9kYXMgbGFzIGxpYnJlcsOtYXMgZW4gdXNvOg0KYGBge3J9DQooLnBhY2thZ2VzKCkpDQpgYGANCiMjIDIuIEVzdGFibGVjaW1pZW50byBkZSB1biBkaXJlY3RvcmlvIGRlIHRyYWJham8NCg0KQ29tbyBzZWd1bmRhIGFjY2nDs24gaW1wb3J0YW50ZSBhbnRlcyBkZSBpbXByb3RhciBkYXRvcywgc2UgZGViZSBlc3RhYmxlY2VyIHVuIGRpcmVjdG9yaW8gZGUgdHJhYmFqbywgZXN0byBlcywgc2UgZGViZSBpbmRpY2FyIGEgUiBlbCBsdWdhciBkb25kZSBzZSBlbmN1ZW50cmFuIGxvY2FsaXphZG9zIGxvcyBhcmNoaXZvcyBxdWUgcXVlcmVtb3MgaW1wb3J0YXIuIA0KDQpQYXJhIGVtcHJlemFyLCB2ZXJpZmlxdWVtb3MgZWwgZGlyZWN0b3JpbyBkZSB0cmFiYWpvIGFjdHVhbDoNCmBgYHtyfQ0KZ2V0d2QoKQ0KYGBgDQpZIGEgY29udGludWFjacOzbiBkZWZpbmFtb3MgZWwgZGlyZWN0b3JpbyBkZXNlYWRvIChhcXVlbCBkb25kZSBlc3TDoW4gbG9zIGFyY2hpdm9zIGEgaW1wb3J0YXIpLiBQYXJhIGVzdG8sIGhheSBkb3MgZm9ybWFzOg0KDQojIyMgMi4xIFVzbyBkZSBzaW50YXhpcw0KDQpFc3RhIGZvcm1hIHJlcXVpZXJlIHF1ZSBzZSBjb25vemNhIGxhIGRpcmVjY2nDs24gZGUgbGEgY2FycGV0YSBkb25kZSBlc3TDoW4gbG9zIGFyY2hpdm9zLCB0YWwgcXVlOg0KYGBge3J9DQojSW5ncmVzZSBsYSBkaXJlY2Npw7NuIHF1ZSBjb3JyZXBvbmRhIGEgY2FkYSB1bmEgZGUgc3VzIGNvbXB1dGFkb3JhcyBkb25kZSBndWFyZGFyb24gbG9zIGFyY2hpdm9zIHF1ZSBkZXNhY2FyZ2Fyb24gZGVsIEF1bGEgVmlydHVhbA0KZGlyZWNjaW9uIDwtICJDOi9Vc2Vycy9qc2FyYS9PbmVEcml2ZS9Eb2N1bWVudG9zL1VIZW1pc2Zlcmlvcy9CSSAyMDIxLTIvRGF0YXNldHMvSW1wb3J0YWNpb24iDQpzZXR3ZChkaXJlY2Npb24pDQpgYGANCg0KVW5hIGZvcm1hIGRlIG9idGVuZXIgZWwgdGV4dG8gY29uIGxhIGRpcmVjY2nDs24gZXMgdXNhbmRvIGVsIGV4cGxvcmFkb3IsIGRpcmlnacOpbmRvc2UgYSBsYSBjYXJwZXRhIGRlc2VhZGEsIHkgZGFuZG8gY2xpY2sgc29icmUgbGEgdGFiIHN1cGVyaW9yLiBJbm1lZGlhdGFtZW50ZSBhbGzDrSBhcGFyZWNlcsOhIGVsIHRleHRvLCBlbCBjdWFsIHNlIGxvIHB1ZWRlIGNvcGlhciB5IHBlZ2FyIGVuIGVsIHNjcmlwdCBlbnRyZSBjb21pbGxhcyB5IGNhbWJpYW5kbyBsb3MgY2FyYWN0ZXJlcyAiXFwiIHBvciAiLyIgc2kgY29ycmVzcG9uZGUuIA0KDQojIyMgMi4yIFVzbyBkZSBtZW7Dug0KDQpFc3RhIHNlZ3VuZGEgZm9ybWEsIHB1ZWRlIHZlcnNlIGNvbW8gdW5hIG3DoXMgYW1pZ2FibGUgeSBxdWUgcmVxdWllcmUgbWVub3IgY2FudGlkYWQgZGUgY8OzZGlnby4gRnVuY2lvbmFyw6EgbXV5IGJpZW4gc2llbXByZSBxdWUgc29sYW1lbnRlIHNlIHJlcXVpZXJhIHVuIGRpcmVjdG9yaW8gZGUgdHJhYmFqbyBlbiB1biBtaXNtbyBzY3JpcHQuDQoNClBhcmEgZXN0bywgc2VndWlyIGxvcyBzaWd1aWVudGVzIHBhc29zOg0KDQoxLiBJbmdyZXNhciBhbCBtZW7DuiBTZXNpw7NuIGVuIGxhIHBhcnRlIHN1cGVyaW9yIGRlIFIgU3R1ZGlvLg0KMi4gSGFjZXIgY2xpY2sgZW4gbGEgb3BjacOzbiAqRXN0YWJsZWNlciBEaXJlY3RvcmlvIGRlIFRyYWJham8qDQozLiBFbiBlbCBzdWJtZW7DuiBxdWUgc2UgZGVzcGxpZWdhIHNlbGVjY2lvbmFyIGxhIG9wY2lvbiAqRXNjb2dlciBEaXJlY3RvcmlvLi4uKg0KNC4gVXRpbGl6YXIgZWwgbmF2ZWdhZG9yIHBhcmEgc2VsZWNjaW9uYXIgbGEgY2FycGV0YSBkZXNlYWRhDQoNClNpIG5vcyBwYXJlY2UgbcOhcyBmw6FjaWwsIHRhbWJpw6luIHBvZGVtb3MgdXNhciBlbCBzaG9ydGN1dCAqQ3RybCtTaGlmdCtIKiBwYXJhIGxsZWdhciBhbCBuYXZlZ2Fkb3IgeSBhbGzDrSBzZWxlY2Npb25hciBsYSBjYXJwZXRhIGRlc2VhZGEuDQoNCiMjIyAyLjMgVmVyaWZpY2FjacOzbiBkZSBhcmNoaXZvcyBjb250ZW5pZG9zIGVuIGRpcmVjdG9yaW8gZGUgdHJhYmFqbw0KDQpQYXJhIHZlcmlmaWNhciBsb3MgYXJjaGl2b3MgZXhpc3RlbnRlcyBlbiBlbCBkaXJlY3RvcmlvIGRlIHRyYWJham8gZXMgcG9zaWJsZSB1dGlsaXphciBsYSBzaWd1aWVudGUgZnVuY2nDs246DQpgYGB7cn0NCmxpc3QuZmlsZXMoKQ0KYGBgDQoNCg0KIyMgMy4gSW1wb3J0YWNpw7NuIGRlIGFyY2hpdm9zIHNlcGFyYWRvcyBwb3IgY29tYXMNCg0KTG9zIGFyY2hpdm9zIHNlcGFyYWRvcyBwb3IgY29tYXMgKENTVikgc29uIHVuYSBmb3JtYSBiYXN0YW50ZSBmcmVjdWVudGUgZGUgZ3VhcmRhciB0YWJsYXMgZGUgZGF0b3Mgb3JnaW5hZGFzIGVuIEV4Y2VsIGRhZGEgc3UgY2FwYWNpZGFkIGRlIGNvbXByZXNpw7NuIHkgYmFqbyB1c28gZGUgbWVtb3JpYSBkZSBhbG1hY2VuYW1pZW50by4gTGEgZnVuY2nDs24gKnJlYWRfY3N2KiBkZSBsYSBsaWJyZXLDrWEgKip0aWR5dmVyc2UqKiBwZXJtaXRlIGxlZXIgeSBjYXJnYXIgYXJjaGl2b3MgZGUgZXN0ZSB0aXBvLCBkZSBsYSBzaWd1aWVudGUgZm9ybWEuDQpgYGB7cn0NCmRhdG9zX2NzdiA8LSByZWFkX2NzdihmaWxlID0gImVqZW1wbG9fY3N2LmNzdiIsDQogICAgICAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gVFJVRSkgI0VuIGNhc28gZGUgcXVlIGVzdGVtb3Mgc2VndXJvcyBxdWUgbGEgdGFibGEgZW4gZWwgYXJjaGl2byB0aWVuZSBub21icmUgZGUgY29sdW1uYXMNCmBgYA0KTWlyZW1vcyBlbiBtw6FzIGRldGFsbGUgZWwgdGlwbyBkZSBvYmpldG8gY3JlYWRvOg0KYGBge3J9DQpjbGFzcyhkYXRvc19jc3YpDQpgYGANCk5vdGVtb3MgcXVlIGVsIGFyY2hpdm8gZXMgdW4gZGF0YSBmcmFtZSwgcGVybyB0YW1iacOpbiBlcyB1bmEgInRpYmJsZSIgcXVlIGVzIHRpcG8gZGUgdGFibGEgZGUgZGF0b3MgbcOhcyBlZmljaWVudGUgY29tcHV0YWNpb25hbG1lbnRlIHkgcHJvcGlvIGRlbCAqKnRpZHl2ZXJzZSoqLg0KDQpFc3R1ZGllbW9zIHN1IGVzdHJ1Y3R1cmEsIHBlcm8gYWhvcmEgZW4gdmV6IGRlIHVzYXIgKnN0ciosIHZlYW1vcyBsYSBvcGNpw7NuIGRlIGxhIGZ1bmNpw7NuICpnbGltcHNlKiBkZWwgKip0aWR5dmVyc2UqKg0KYGBge3J9DQpnbGltcHNlKGRhdG9zX2NzdikNCmBgYA0KTm90ZW1vcyBxdWUgZWwgcmVzdWx0YWRvIG9idGVuaWRvIGVudHJlICpzdHIqIHkgKmdsaW1wc2UqIGVzIGVsIG1pc21vLCBzb2xhbWVudGUgaGF5IHVuYSBtZWpvcmEgYSBuaXZlbCBkZSBsYSBwcmVzZW50YWNpw7NuLiBFbiBhZGVsYW50ZSwgcG9kZW1vcyB1c2FyIGN1YWxxdWllcmEgZGUgZXN0YXMgc2ludGF4aXMgZGUgZm9ybWEgaW5kaXN0aW50YS4NCg0KRmluYWxtZW50ZSwgZGVtb3MgdW5hIG1pcmFkYSBhIGxvcyBkYXRvcyBjb24gKlZpZXcqIChvIHN1IGVxdWl2YWxlbnRlICp2aWV3KiBlbiBlbCAqKnRpZHl2ZXJzZSoqKS4NCmBgYHtyfQ0KdmlldyhkYXRvc19jc3YpDQpgYGANCg0KQ29uY2x1eWFtb3MgZXN0YSBwYXJ0ZSBoYWNpZW5kbyB1biByZXN1bWVuIGVzdGFkw61zdGljbyBkZWwgZGF0YSBmcmFtZToNCmBgYHtyfQ0Kc3VtbWFyeShkYXRvc19jc3YpDQpgYGANCk5vdGVtb3MgcXVlIGxhIGltcG9ydGFjacOzbiBmdW5jaW9uw7MsIHBlcm8gY29uIGFsZ3Vub3MgcGVxdWXDsW9zIGNvbnRyYXRpZW1wb3M6DQoNCiogTG9zIG5vbWJyZXMgZGUgbGFzIGNvbHVtbmFzIGVzdMOhbiBlbiAqc3BhbmdsaXNoKiwgeSBlc28gbm8gc3VlbGUgc2VyIHNpZW1wcmUgYWRlY3VhZG8uDQoqIExhIHZhcmlhYmxlICpkYXRlKiwgZXMgdW5hIGZlY2hhIGVuIGZvcm1hdG8gbWVzL2RpYS9hw7FvLCBwZXJvIGFsIGltcG9yYXJsYSBSIGxhIGNsYXNpZmljw7MgY29tbyBkZSB0aXBvIHRleHRvLg0KKiBMYXMgdmFyaWFibGVzICpjbGllbnRlX2lkKiB5ICpwcm9kX2lkKiBzb24gc2VjdWVuY2lhbGVzIHBlcm8gUiBsb3MgY2xhc2lmaWPDsyBjb21vIG51bcOpcmljb3MuIEFkaWNpb25hbG1lbnRlLCB0aWVuZW4gbm9tYnJlcyAiZmVvcyIuDQoqIExhIHZhcmlhYmxlICp1bmlkYWRlcyogZGViZXLDrWEgc2VyIGVudGVybyBwZXJvIFIgbGEgY2xhc2lmaWPDsyBjb21vIG51bcOpcmljYSBkZWNpbWFsICh0YW1iacOpbiBsbGFtYWRvICJkb3VibGUiKS4NCg0KUGFyYSBhcnJlZ2xhciBlc3RvLCB2YW1vcyBhIHZvbHZlciBhIGltcG9ydGFyLCBwZXJvIGNvbiB1bmFzIGVzcGVjaWZpY2FjaW9uZXMgYWRpY2lvbmFsZXMgZW4gbGEgZnVuY2nDs24gKnJlYWRfY3N2KjoNCmBgYHtyfQ0KZGF0b3NfY3N2IDwtIHJlYWRfY3N2KGZpbGUgPSAiZWplbXBsb19jc3YuY3N2IiwNCiAgICAgICAgICAgICAgICAgICAgICAjU2UgZXNwZWNpZmljYW4gbm9tYnJlcyBwZXJzb25hbGl6YWRvcyBhIGNhZGEgY29sdW1uYQ0KICAgICAgICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGMoImZlY2hhIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGllbnRlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9kdWN0byIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pZGFkZXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbG9yIiksDQogICAgICAgICAgICAgICAgICAgICAgI05vIHNlIGNvbnNpZGVyYW4gbG9zIG5vbWJyZXMgb3JpZ2luYWxlcw0KICAgICAgICAgICAgICAgICAgICAgIHNraXAgPSAxLA0KICAgICAgICAgICAgICAgICAgICAgICNTZSBkZWZpbmUgbGEgY2xhc2UgZGUgY2FkYSBjb2x1bW5hDQogICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyhmZWNoYSA9IGNvbF9kYXRlKGZvcm1hdCA9ICIlbS8lZC8lWSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50ZSA9IGNvbF9mYWN0b3IoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RvID0gY29sX2ZhY3RvcigpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pZGFkZXMgPSBjb2xfaW50ZWdlcigpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsb3IgPSBjb2xfZG91YmxlKCkpKQ0KYGBgDQoNClZlYW1vcyBsYSBlc3RydWN0dXJhIGRlIG51ZXN0cmEgdGFibGEgY29uIGVzdG9zIGFqdXN0ZXM6DQpgYGB7cn0NCmdsaW1wc2UoZGF0b3NfY3N2KQ0KYGBgDQpZIGVsIHJlc3VtZW4gZXN0YWTDrXN0aWNvOg0KYGBge3J9DQpzdW1tYXJ5KGRhdG9zX2NzdikNCmBgYA0KU2UgaGEgbG9ncmFkbyB1bmEgaW1wb3J0YWNpw7NuIG11Y2hvIG3DoXMgbGltcGlhIGluY2x1c28gY29uc2lkZXJhbmRvIHF1ZSBlc3RhbW9zIHRyYWJhamFuZG8gY29uIGNlcmNhIGRlIG1lZGlvIG1pbGzDs24gZGUgcmVnaXN0cm9zLg0KDQojIyA0LiBJbXBvcnRhY2nDs24gZGUgYXJjaGl2b3MgcGxhbm9zIGRlIHRleHRvDQoNCkVuIG11Y2hhcyBvY2FzaW9uZXMsIGxhcyB0YWJsYXMgZGUgZGF0b3Mgc2UgZ3VhcmRhbiBkZSBmb3JtYSBiw6FzaWNhIHkgZ2Vuw6lyaWNhIGVuIGZvcm1hdG9zIHRleHRvICh0eHQpLiBDdWFuZG8gbG9zIGFyY2hpdm9zIGVzdMOhbiBlbiBlc3RlIGZvcm1hdG8sIHB1ZWRlbiBjb21wYXJ0aXJzZSBlbnRyZSBkaXN0aW50b3Mgc2lzdGVtYXMgb3BlcmF0aXZvcyAoV2luZG93cywgTGludXgsIE1hYyksIG8gY2FyZ2Fyc2UgZGUgZm9ybWEgbcOhcyBzZW5jaWxsYSBlbiBww6FnaW5hcyB3ZWIuDQoNCiMjIyA0LjEgQXJjaGl2b3Mgc2VwYXJhZG9zIHBvciB0YWJ1bGFkb3MNCg0KQ29uIFIgcG9kZW1vcyBjYXJnYXIgZGF0b3MsIHNpZW1wcmUgcXVlIHNlcGFtb3MgcXVlIGxvcyBzZXBhcmFkb3JlcyBzb24gdGFidWxhZG9zLCB1c2FuZG8gbGEgZnVuY2nDs24gKnJlYWRfdHN2KiBkZWwgKip0aWR5dmVyc2UqKi4NCmBgYHtyfQ0KZGF0b3NfdHN2IDwtIHJlYWRfdHN2KGZpbGUgPSAiZWplbXBsb190c3YudHh0IiwNCiAgICAgICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBUUlVFKQ0KYGBgDQpBbCBpZ3VhbCBxdWUgYW50ZXMsIHZlYW1vcyBsYSBlc3RydWN0dXJhIHkgdW4gcmVzdW1lbiBlc3RhZMOtc3RpY28gZGUgZXN0YSB0YWJsYSBpbXBvcnRhZGEuDQpgYGB7cn0NCmdsaW1wc2UoZGF0b3NfdHN2KQ0Kc3VtbWFyeShkYXRvc190c3YpDQpgYGANCiMjIyA0LjEgQXJjaGl2b3Mgc2VwYXJhZG9zIHBvciBvdHJvcyBjYXJhY3RlcmVzDQoNCkxvcyBhcmNoaXZvcyBwbGFub3MgdGFtYmnDqW4gcHVlZGVuIGVzdGFyIHNlcGFyYWRvcyBwb3IgY2FyYWN0ZXJlcyBkaWZlcmVudGVzIGEgY29tYXMgKCwpIG8gdGFidWxhZG9zLiBFbiBlc3RvcyBjYXNvcyBwb2RlbW9zIHVzYXIgbGEgZnVuY2nDs24gKnJlYWRfZGVsaW0qIGRlbCAqKnRpZHl2ZXJzZSoqLCBjb21vIGVuIGVsIHNpZ3VpZW50ZSBlamVtcGxvIGVuIGVsIHF1ZSBsb3MgZGF0b3MgZXN0w6FuIHNlcGFyYWRvcyBwb3IgZWwgc2lnbm8gZGUgcHVudG8geSBjb21hICg7KQ0KYGBge3J9DQpkYXRvc19weWMgPC0gcmVhZF9kZWxpbShmaWxlID0gImVqZW1wbG9fcHljLnR4dCIsDQogICAgICAgICAgICAgICAgICAgICAgICBkZWxpbSA9ICI7IiwNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IFRSVUUpDQpgYGANCk5vdGVtb3MgcXVlIGVudHJlIGxvcyBwYXLDoW1ldHJvcyAobyBhdHJpYnV0b3MpIGRlIGxhIGZ1bmNpb24gdXRpbGl6YWRhIHNlIGVuY3VlbnRyYSAqZGVsaW0qLCBkb25kZSBzZSBpbmRpY2EgY3VhbCBlcyBlbCBzZXBhcmFkb3IgZGUgbG9zIGRhdG9zIHF1ZSBxdWVyZW1vcyBpbXBvcnRhci4NCg0KSWd1YWwgcXVlIGFudGVzLCB2ZWFtb3Mgc3UgZXN0cnVjdHVyYSB5IHVuIHJlc3VtZW4gZXN0YWTDrXN0aWNvDQpgYGB7cn0NCmdsaW1wc2UoZGF0b3NfcHljKQ0Kc3VtbWFyeShkYXRvc19weWMpDQpgYGANCiMjIDUuIEltcG9ydGFjacOzbiBkZSBhcmNoaXZvcyBleGNlbA0KDQpTaSBiaWVuIGVuIGVsIG11bmRvIGRlbCBhbsOhbGlzaXMgZGUgZGF0b3Mgbm8gc2Ugc3VlbGUgdGVuZXIgY29tbyB1biBmb3JtYXRvIHByZWZlcmVudGUgYSBsYXMgaG9qYXMgZGUgY8OhbGN1bG8gZGUgRXhjZWwsIG5vIHNlIHB1ZWRlIG5lZ2FyIHF1ZSBzb24gdW5hIGRlIGxhcyBmb3JtYXMgbcOhcyBjb211bmVzIGRlIHByZXNlbnRhciB0YWJsYXMgZGUgZGF0b3MgZW4gdG9kbyBlbCBtdW5kby4gDQoNCkVuIGVzdGUgc2VudGlkbywgUiBjdWVudGEgY29uIHVuYSBsaWJyZXLDrWEgYWRpY2lvbmFsIHF1ZSBmYWNpbGl0YSBzdSBsZWN0dXJhIHkgcG9zdGVyaW9yIGltcG9ydGFjacOzbjogKipyZWFkeGwqKi4gSW5zdGFsw6ltb3NsYSB5IGFjdGl2w6ltb3NsYSBlbiBudWVzdHJhIHNlc2nDs24gZGUgUiBTdHVkaW8uDQpgYGB7cn0NCmluc3RhbGwucGFja2FnZXMoInJlYWR4bCIpDQpgYGANCmBgYHtyfQ0KbGlicmFyeShyZWFkeGwpDQpgYGANCg0KUGFyYSBlbnRlbmRlciBlbCB1c28gZGUgZXN0YSBsaWJyZXLDrWEsIHZlYW1vcyBwcmltZXJvIGxhIGZ1bmNpw7NuICpleGNlbF9zaGVldHMqIHF1ZSBub3MgcGVybWl0ZSB2aXN1YWxpemFyIHRvZGFzIGxhcyBob2phcyBkZSBjw6FsY3VsbyBhY3RpdmFkZXMgZW4gdW4gYXJjaGl2byBFeGNlbC4NCmBgYHtyfQ0KZXhjZWxfc2hlZXRzKHBhdGggPSAiZWplbXBsb194bHMueGxzeCIpDQpgYGANCkNvbW8gc2UgcHVlZGUgYXByZWNpYXIsIGVsIGFyY2hpdm8gZXhjZWwgdGllbmUgMyBob2phcyBkaXN0aW50YXMuIFF1ZXJlbW9zIGltcG9ydGFyIHNvbGFtZW50ZSBsYSBwcmltZXJhLCBwYXJhIGxvIGN1YWwgdmFtb3MgZW4gcHJpbWVyYSBpbnN0YW5jaWEgYSBndWFyZGFyIGxhcyBob2phcyBlbiB1biB2ZWN0b3IgbGxhbWFkbyAiaG9qYXNfZXhjZWwiLg0KYGBge3J9DQpob2phc19leGNlbCA8LSBleGNlbF9zaGVldHMocGF0aCA9ICJlamVtcGxvX3hscy54bHN4IikNCmBgYA0KVW5hIHZleiwgcXVlIGNvbnRhbW9zIGNvbiBlc3RlIG9iamV0bywgdmFtb3MgYSBpbXBvcnRhciBsYSBwcmltZXJhIGhvamEsIHV0aWxpemFuZG8gbGEgZnVuY2nDs24gKnJlYWRfZXhjZWwqIGRlICoqcmVhZHhsKiouDQpgYGB7cn0NCmRhdG9zX3hscyA8LSByZWFkX2V4Y2VsKHBhdGggPSAiZWplbXBsb194bHMueGxzeCIsDQogICAgICAgICAgICAgICAgICAgICAgICBzaGVldCA9IGhvamFzX2V4Y2VsWzFdLA0KICAgICAgICAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gVFJVRSkNCmBgYA0KDQpWZWFtb3Mgc3UgZXN0cnVjdHVyYSB5IGVsIHJlc3VtZW4gZXN0YWTDrXN0aWNvIGNvcnJlc3BvbmRpZW50ZS4NCmBgYHtyfQ0KZ2xpbXBzZShkYXRvc194bHMpDQpzdW1tYXJ5KGRhdG9zX3hscykNCmBgYA0KIyMgNi4gSW1wb3J0YWNpw7NuIGRlIGFyY2hpdm9zIGRlc2RlIGludGVybmV0DQoNCk5vIHNpZW1wcmUgc2UgY3VlbnRhbiBjb24gYXJjaGl2b3MgZ3VhcmRhZG9zIGRlIGZvcm1hIGxvY2FsIGVuIGVsIGNvbnRleHRvIGRlbCBhbsOhbGlzaXMgZGUgZGF0b3MuIEVuIG11Y2hhcyBvY2FzaW9uZXMsIGxhcyB0YWJsYXMgcXVlIG5lY2VzaXRhbW9zIGVzdGFuIGRpc3BvbmlibGVzIGVuIHDDoWdpbmFzIHdlYiB5IHB1ZWRlIHJlc3VsdGFyIGxhYm9yaW9zbyBlbCBwcm9jZXNvIGRlIGRlc2NhcmdhciwgZ3VhcmRhciB5IGx1ZWdvIGltcG9ydGFyLiANCg0KUGFyYSBvcHRpbWl6YXIgZXN0bywgdG9kYXMgbGFzIGZ1bmNpb25lcyBxdWUgaGVtb3MgdmlzdG8gaGFzdGEgYWhvcmEgZGUgbGFzIGxpYnJlcsOtYXMgKip0aWR5dmVyc2UqKiB5ICoqcmVhZHhsKiosIHB1ZWRlbiBhdXRvbcOhdGljYW1lbnRlIGltcG9ydGFyIGRpcmVjdGFtZW50ZSBhcmNoaXZvcyBkZXNkZSBww6FnaW5hcyB3ZWIgZXNwZWNpZmljYW5kbyBsYSBkaXJlY2Npw7NuIFVSTCBkb25kZSBzZSBlbmN1ZW50cmFuLiANCg0KVmVhbW9zIHVub3MgY3VhbnRvcyBkZSBlamVtcGxvczoNCmBgYHtyfQ0KZGF0b3Nfd2ViMSA8LSByZWFkX2RlbGltKGZpbGUgPSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2pzYXJhdWpvNTA4MS9ob3VzZV9wcmljaW5nL21haW4vZGF0YXNldC5jc3YiLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGltID0gIjsiLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IFRSVUUpDQpgYGANClZlYW1vcyBzdSBlc3RydWN0dXJhOg0KYGBge3J9DQpnbGltcHNlKGRhdG9zX3dlYjEpDQpgYGANCk90cm8gZWplbXBsbyBjb24gZGF0b3MgZGVsIGRlcGFydGFtZW50byBkZSBlc3RhZMOtc3RpY2FzIGRlIGxvcyBFc3RhZG9zIFVuaWRvczoNCmBgYHtyfQ0KZGF0b3Nfd2ViMiA8LSByZWFkX2NzdihmaWxlID0gImh0dHBzOi8vd3d3Mi5jZW5zdXMuZ292L3Byb2dyYW1zLXN1cnZleXMvcG9wZXN0L2RhdGFzZXRzLzIwMTAtMjAxOS9jb3VudGllcy90b3RhbHMvY28tZXN0MjAxOS1hbGxkYXRhLmNzdiIsDQogICAgICAgICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IFRSVUUpDQpgYGANClZlYW1vcyBzdSBlc3RydWN0dXJhIHkgdW4gcmVzdW1lbiBlc3RhZMOtc3RpY28NCmBgYHtyfQ0KZ2xpbXBzZShkYXRvc193ZWIyKQ0Kc3VtbWFyeShkYXRvc193ZWIyKQ0KYGBgDQoNCg0K