Capítulo18 Importar datos

Fecha de la última revisión

## [1] "2026-08-01"


18.1 Datos importados de la web.

Los ejemplos de esta sección descargan datos en vivo desde internet con fread("https://…"), así que necesitas conexión para ejecutarlos. Si ves Error in download.file(...): cannot open URL o un HTTP error, revisa tu conexión o inténtalo más tarde: el servidor puede estar caído o tardar en responder. Una buena práctica es descargar el archivo una vez y guardarlo con write_csv() en Datos/ para no depender de la red. Encontrarás más errores frecuentes y cómo resolverlos en el capítulo Errores comunes (14).

18.1.1 Usar datos que provienen de una base de datos del web.

Aquí un website que recopila la cantidad de personas vacunadas en los EEUU.

library(tidyverse)
library(data.table)

Seleccionar solamente los datos de Puerto Rico

18.1.2 COVID world

Otro website de datos de COVID, estos representan los datos de todos los países del mundo


Para encontrar datos de PR vea el siguiente enlace: Este sitio del gobierno de Puerto Rico almacena datos muchos diferentes tipos que están relacionados a la isla.

https://datos.estadisticas.pr/dataset?res_format=CSV

Nota que para leer los datos de un archivo CSV, se usa la función “fread()” del paquete “data.table”.

  • Cuando entre a la página, selecciona uno de los archivos, por ejemplo Facultad -Conservatorio de Musica
  • Presione el botón “Explore” y selecciona “Preview”
  • Arriba de la página verá el enlace de https://……… para poner en un script.
  • Copie y pegue en el script.

Otra alternativa es bajar los datos en formato .csv o Excel y subirlo a su proyecto en RStudio.

18.2 Ejercicio

  • Selecciona solamente los datos de los bebés que nacieron primer mes del año, pero agrupado por el día de la semana y contabilizado

COVID_PR

  • Calcula la cantidad de muertes por día en PR, y el máximo de muerto en un día por COVID

18.3 Datos importando de su computadora

18.3.1 Temas: Funciones para importar datos con el paquete readr

  • read_csv() # separado por coma
  • read_csv2() # separado por punto y coma
  • read_tsv() # separado por tab
  • read_delim() # separado por delimitador
  • read_fwf()
  • read_width()
  • read_positions()
  • read_table()

read_csv() (readr) y fread() (data.table) — importar datos.

  • read_csv("archivo.csv"): lee un CSV a un tibble; variantes: read_csv2() (separado por ;), read_tsv() (tabs), read_delim() (delimitador a elección).
  • fread("https://…"): rápido y práctico para leer directamente desde una URL.
  • write_csv(objeto, "archivo.csv"): guarda tus datos para no depender de la red.
library(tidyverse)
library(readr)
Newborn_Karn_Penrose <- read_csv("Datos/Newborn_Karn_Penrose.csv")


#library(readxl)
#Newborn_Karn_Penrose1 <- read_excel("~/Google Drive/GitHub_Google_Drive/GitHub/Vintage_DATA/DATA/Human_Birth_Weight/Newborn_Karn_Penrose.xlsx", sheet = 3)

head(Newborn_Karn_Penrose)
## # A tibble: 6 × 4
##   Mother_age Count_Non_survivors Count_Total_Birth Birth_weight
##        <dbl>               <dbl>             <dbl>        <dbl>
## 1         16                   0                 1          9.5
## 2         16                   0                 2          9  
## 3         16                   0                 1          8.5
## 4         16                   0                 3          8  
## 5         16                   0                 7          7.5
## 6         16                   0                 2          7

Hacer una columna de la proporción de los niños que no sobrevivieron.

Newborn_Karn_Penrose %>% dplyr::select(Count_Non_survivors, Count_Total_Birth) %>% arrange(Count_Total_Birth, Count_Non_survivors) %>% mutate(Perc_sobrevivieron = Count_Non_survivors/Count_Total_Birth)

Newborn_Karn_Penrose %>% 
  mutate(Percent_Decease = Count_Non_survivors/Count_Total_Birth)
## # A tibble: 261 × 5
##    Mother_age Count_Non_survivors Count_Total_Birth Birth_weight Percent_Decease
##         <dbl>               <dbl>             <dbl>        <dbl>           <dbl>
##  1         16                   0                 1          9.5               0
##  2         16                   0                 2          9                 0
##  3         16                   0                 1          8.5               0
##  4         16                   0                 3          8                 0
##  5         16                   0                 7          7.5               0
##  6         16                   0                 2          7                 0
##  7         16                   0                 4          6.5               0
##  8         16                   0                 2          6                 0
##  9         16                   0                 2          5.5               0
## 10         16                   0                 1          5                 0
## # ℹ 251 more rows

Newborn_Karn_Penrose %>% dplyr::select(Count_Non_survivors, Count_Total_Birth, Birth_weight) %>% arrange(Count_Total_Birth, Count_Non_survivors) %>% mutate(porc_sobrevivieron = Count_Non_survivors / Count_Total_Birth)%>% ggplot(aes(x= Birth_weight, y=porc_sobrevivieron))+ geom_point()+ geom_smooth()

Newborn_Karn_Penrose %>% 
  mutate(Percent_Decease = Count_Non_survivors/Count_Total_Birth) %>% 
  ggplot(aes(Birth_weight, Percent_Decease)) + 
  geom_point() +
  geom_smooth()

Newborn_Karn_Penrose %>% 
  mutate(Percent_Decease = Count_Non_survivors/Count_Total_Birth) %>% 
  ggplot(aes(Birth_weight, Percent_Decease)) + 
  geom_point() +
  geom_smooth()+
  facet_wrap(~Mother_age)

Newborn_Karn_Penrose %>% 
  mutate(Percent_Decease = Count_Non_survivors/Count_Total_Birth) %>% 
  ggplot(aes(Birth_weight, Percent_Decease, color=Mother_age)) + 
  geom_point(aes(color=factor(Mother_age))) +
  geom_smooth(se=FALSE, aes(color=factor(Mother_age)))


18.4 Comparar con base R


  1. Ejercicios:

Hacer los ejercicios en la sección 11.2.2 del libro en español


18.5 Segmentar un vector

parse_*() (readr) — convertir texto al tipo correcto.

  • Qué hacen: parse_integer(), parse_double(), parse_number(), parse_logical(), parse_date(), parse_factor() convierten cadenas de texto a números, fechas, etc.
  • parse_number("$123.45"): extrae el número ignorando símbolos como $ o %.
  • locale = locale(...): controla la codificación, el separador de miles y el formato de fecha.
  • str(parse_logical())
x= c("TRUE", "FALSE", "NA")
x   
## [1] "TRUE"  "FALSE" "NA"
str(parse_logical(x)) 
##  logi [1:3] TRUE FALSE NA
y= c("Carlos", "Kelvin")
     
y
## [1] "Carlos" "Kelvin"
str(parse_logical(y)) 
##  logi [1:2] NA NA
##  - attr(*, "problems")= tibble [2 × 4] (S3: tbl_df/tbl/data.frame)
##   ..$ row     : int [1:2] 1 2
##   ..$ col     : int [1:2] NA NA
##   ..$ expected: chr [1:2] "1/0/T/F/TRUE/FALSE" "1/0/T/F/TRUE/FALSE"
##   ..$ actual  : chr [1:2] "Carlos" "Kelvin"
str(parse_logical(c("TRUE", "FALSE", "NA")))
##  logi [1:3] TRUE FALSE NA
z=c("1", "2", "3")
z
## [1] "1" "2" "3"
mean(z)
## [1] NA
z1=str(parse_integer(z))
##  int [1:3] 1 2 3
str(parse_integer(c("1", "2", "3")))
##  int [1:3] 1 2 3
str(parse_date(c("2010-01-01", "1979-10-14")))
##  Date[1:2], format: "2010-01-01" "1979-10-14"
m=c("$4000", "$500" )
parse_number(m)
## [1] 4000  500
parse_number("$100")
## [1] 100
#> [1] 100
parse_number("20%")
## [1] 20
#> [1] 20
parse_number("It cost $123.45")
## [1] 123.45
#> [1] 123.45
  • str(parse_integer())
  • str(parse_date())

18.6 Números

  • parse_double()
  • parse_number()
  • parse_number(locale=locale(grouping_mark = “.”))

18.7 Cadena de texto

  • parse_character()

  • charToRaw()

charToRaw("Ramn")
## [1] 52 61 6d 6e
x1 <- "El Ni\xf1o was particularly bad this year"
x2 <- "\x82\xb1\x82\xf1\x82\xc9\x82\xbf\x82\xcd"
x3 <- "The boy was particularly bad this year"

library(readr)
  parse_character(x1, locale = locale(encoding = "Latin1"))
## [1] "El Niño was particularly bad this year"
#> [1] "El Niño was particularly bad this year"
parse_character(x2, locale = locale(encoding = "Shift-JIS"))
## [1] "こんにちは"
parse_character(x2, locale = locale(encoding = "Shift-JIS"))
## [1] "こんにちは"
#> [1] "こんにちは"
  • guess_encoding(charToRaw())
guess_encoding(charToRaw(x3))
## # A tibble: 1 × 2
##   encoding confidence
##   <chr>         <dbl>
## 1 ASCII             1

18.8 Factores

  • parse_factor()

18.9 Fechas, fechas-horas, horas

  • parse_datetime()

  • library(hms)

  • parse_time()

  1. Ejercicios:

Hacer los ejercicios en la sección 11.3.5 del libro en español

18.10 Segmentar un archivo

  • guess_parser

18.11 Escribir un Archivo

Después de descargar datos de internet, guárdalos con write_csv() para trabajar sin depender de la conexión en la próxima sesión.

  • write_csv()
  • write_tsv()

18.12 Otros tipos de datos y paquetes

  • library(haven) # SPSS, Stata y SAS
  • readxl() lee archivo Excel en formato .xls, xlsx
  • BDI lee archivo RMySQL y otros