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.
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)
## # 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.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())
## [1] "TRUE" "FALSE" "NA"
## logi [1:3] TRUE FALSE NA
## [1] "Carlos" "Kelvin"
## 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"
## logi [1:3] TRUE FALSE NA
## [1] "1" "2" "3"
## [1] NA
## int [1:3] 1 2 3
## int [1:3] 1 2 3
## Date[1:2], format: "2010-01-01" "1979-10-14"
## [1] 4000 500
## [1] 100
## [1] 20
## [1] 123.45
- str(parse_integer())
- str(parse_date())
18.7 Cadena de texto
parse_character()
charToRaw()
## [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] "こんにちは"
## [1] "こんにちは"
- guess_encoding(charToRaw())
## # A tibble: 1 × 2
## encoding confidence
## <chr> <dbl>
## 1 ASCII 1
18.9 Fechas, fechas-horas, horas
parse_datetime()
library(hms)
parse_time()
- Ejercicios:
Hacer los ejercicios en la sección 11.3.5 del libro en español