Este informe analiza los accesos a Internet por provincia (banda ancha fija y dial-up) a partir del archivo entregado. Los objetivos principales son:
# Cargar la hoja principal
df_raw <- read_excel("internet_accesos_baf_provincias.xlsx") %>% clean_names()
# Verificar nombres y tipos
glimpse(df_raw)## Rows: 1,127
## Columns: 6
## $ anio <dbl> 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015,…
## $ trimestre <dbl> 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,…
## $ provincia <chr> "Buenos Aires", "CABA", "Catamarca", "Chaco", "Chubut…
## $ banda_ancha_fija <dbl> 2946743, 1360381, 26459, 86537, 62279, 625835, 85409,…
## $ dial_up <dbl> 12642, 9845, 13, 16, 1740, 235, 26, 180, 1, 2, 312, 1…
## $ total <dbl> 2959385, 1370226, 26472, 86553, 64019, 626070, 85435,…
# Esperamos columnas: anio, trimestre, provincia, banda_ancha_fija, dial_up, total
df <- df_raw %>%
rename_with(~str_replace_all(.x, "\\s+", "_")) %>%
mutate(
provincia = as.character(provincia),
anio = as.integer(anio),
trimestre = as.integer(trimestre),
banda_ancha_fija = as.numeric(banda_ancha_fija),
dial_up = as.numeric(dial_up),
total = as.numeric(total)
) %>%
# Si faltan totales, recalcular
mutate(total = if_else(is.na(total) & !is.na(banda_ancha_fija), banda_ancha_fija + coalesce(dial_up, 0), total))
# Quitar observaciones con provincia NA
df <- df %>% filter(!is.na(provincia))
summary(df)## anio trimestre provincia banda_ancha_fija
## Min. :2014 Min. :1.000 Length:1127 Min. : 12193
## 1st Qu.:2016 1st Qu.:1.000 Class :character 1st Qu.: 63534
## Median :2019 Median :2.000 Mode :character Median : 117442
## Mean :2019 Mean :2.427 Mean : 378423
## 3rd Qu.:2022 3rd Qu.:3.000 3rd Qu.: 200189
## Max. :2025 Max. :4.000 Max. :5354868
## dial_up total
## Min. : 0.0 Min. : 12557
## 1st Qu.: 5.0 1st Qu.: 64036
## Median : 133.0 Median : 117809
## Mean : 851.9 Mean : 379275
## 3rd Qu.: 564.0 3rd Qu.: 200950
## Max. :15229.0 Max. :5360230
# Total nacional por año-trimestre
nacional_q <- df %>%
group_by(anio, trimestre) %>%
summarise(
banda_ancha = sum(banda_ancha_fija, na.rm = TRUE),
dial_up = sum(dial_up, na.rm = TRUE),
total = sum(total, na.rm = TRUE)
) %>%
ungroup() %>%
arrange(anio, trimestre) %>%
mutate(periodo = paste0(anio, " Q", trimestre))
# Mostrar tabla resumen nacional con gt
nacional_q %>%
select(periodo, banda_ancha, dial_up, total) %>%
gt() %>%
fmt_number(columns = vars(banda_ancha, dial_up, total), decimals = 0, sep_mark = ",") %>%
tab_header(title = "Accesos a Internet - Total nacional por trimestre")| Accesos a Internet - Total nacional por trimestre | |||
| periodo | banda_ancha | dial_up | total |
|---|---|---|---|
| 2014 Q1 | 6,362,108 | 36,290 | 6,398,398 |
| 2014 Q2 | 6,428,329 | 36,139 | 6,464,468 |
| 2014 Q3 | 6,559,264 | 36,007 | 6,595,271 |
| 2014 Q4 | 6,559,172 | 39,324 | 6,598,496 |
| 2015 Q1 | 6,699,714 | 38,018 | 6,737,732 |
| 2015 Q2 | 6,783,279 | 32,909 | 6,816,188 |
| 2015 Q3 | 6,902,267 | 32,801 | 6,935,068 |
| 2015 Q4 | 6,952,289 | 32,542 | 6,984,831 |
| 2016 Q1 | 6,874,704 | 32,652 | 6,907,356 |
| 2016 Q2 | 7,097,604 | 32,475 | 7,130,079 |
| 2016 Q3 | 7,178,340 | 28,610 | 7,206,950 |
| 2016 Q4 | 7,223,128 | 28,545 | 7,251,673 |
| 2017 Q1 | 7,277,314 | 28,540 | 7,305,854 |
| 2017 Q2 | 7,401,134 | 28,530 | 7,429,664 |
| 2017 Q3 | 7,696,594 | 28,349 | 7,724,943 |
| 2017 Q4 | 7,842,778 | 27,444 | 7,870,222 |
| 2018 Q1 | 8,009,981 | 27,072 | 8,037,053 |
| 2018 Q2 | 8,083,533 | 26,911 | 8,110,444 |
| 2018 Q3 | 8,320,223 | 26,812 | 8,347,035 |
| 2018 Q4 | 8,451,841 | 21,814 | 8,473,655 |
| 2019 Q1 | 8,626,323 | 21,812 | 8,648,135 |
| 2019 Q2 | 8,938,427 | 21,754 | 8,960,181 |
| 2019 Q3 | 9,142,891 | 21,793 | 9,164,684 |
| 2019 Q4 | 8,783,053 | 10,128 | 8,793,181 |
| 2020 Q1 | 8,802,435 | 9,991 | 8,812,426 |
| 2020 Q2 | 9,021,040 | 10,016 | 9,031,056 |
| 2020 Q3 | 9,346,183 | 10,016 | 9,356,199 |
| 2020 Q4 | 9,561,546 | 10,016 | 9,571,562 |
| 2021 Q1 | 9,637,956 | 10,016 | 9,647,972 |
| 2021 Q2 | 9,852,702 | 10,382 | 9,863,084 |
| 2021 Q3 | 10,075,184 | 10,357 | 10,085,541 |
| 2021 Q4 | 10,476,933 | 12,861 | 10,489,794 |
| 2022 Q1 | 19,807,402 | 23,075 | 19,830,477 |
| 2022 Q2 | 10,946,248 | 12,436 | 10,958,684 |
| 2022 Q3 | 11,078,691 | 12,437 | 11,091,128 |
| 2022 Q4 | 11,195,668 | 12,446 | 11,208,114 |
| 2023 Q1 | 11,229,459 | 12,436 | 11,241,895 |
| 2023 Q2 | 11,239,781 | 12,116 | 11,251,897 |
| 2023 Q3 | 11,395,115 | 11,793 | 11,406,908 |
| 2023 Q4 | 11,535,868 | 11,793 | 11,547,661 |
| 2024 Q1 | 11,621,363 | 11,793 | 11,633,156 |
| 2024 Q2 | 11,544,314 | 11,793 | 11,556,107 |
| 2024 Q3 | 11,685,135 | 11,827 | 11,696,962 |
| 2024 Q4 | 11,913,680 | 11,940 | 11,925,620 |
| 2025 Q1 | 12,079,765 | 11,852 | 12,091,617 |
| 2025 Q2 | 12,242,362 | 11,408 | 12,253,770 |
# Top 8 provincias por último periodo disponible
# Determinar último año y trimestre disponibles
ultimo_anio <- max(df$anio, na.rm = TRUE)
ultimo_trimestre <- df %>% filter(anio == ultimo_anio) %>% summarise(max_tri = max(trimestre, na.rm = TRUE)) %>% pull(max_tri)
top_provincias <- df %>%
filter(anio == ultimo_anio, trimestre == ultimo_trimestre) %>%
arrange(desc(total)) %>%
slice_head(n = 8) %>%
select(provincia, banda_ancha_fija, dial_up, total)
top_provincias %>%
gt() %>%
fmt_number(columns = vars(banda_ancha_fija, dial_up, total), decimals = 0)| provincia | banda_ancha_fija | dial_up | total |
|---|---|---|---|
| Buenos Aires | 5,354,868 | 5,362 | 5,360,230 |
| CABA | 1,479,161 | 2,551 | 1,481,712 |
| Córdoba | 1,135,804 | 52 | 1,135,856 |
| Santa Fe | 932,445 | 125 | 932,570 |
| Mendoza | 352,380 | 646 | 353,026 |
| Entre Ríos | 307,713 | 18 | 307,731 |
| Tucumán | 278,928 | 23 | 278,951 |
| Misiones | 214,087 | 0 | 214,087 |
plot_nacional <- nacional_q %>%
pivot_longer(cols = c(banda_ancha, dial_up), names_to = "tipo", values_to = "valor") %>%
ggplot(aes(x = periodo, y = valor, color = tipo, group = tipo)) +
geom_line(size = 1) +
geom_point(size = 1.5) +
theme_minimal() +
labs(x = "Periodo", y = "Accesos",
title = "Serie temporal de accesos a Internet (nacional)",
color = "Tipo") +
scale_y_continuous(labels = scales::label_number(big.mark = ",", accuracy = 1)) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
nacional_q %>%
count(periodo) %>%
filter(n > 1)## # A tibble: 0 × 2
## # ℹ 2 variables: periodo <chr>, n <int>
part_prov <- df %>%
filter(anio == ultimo_anio, trimestre == ultimo_trimestre) %>%
mutate(pct = banda_ancha_fija / sum(banda_ancha_fija, na.rm = TRUE) * 100) %>%
arrange(desc(pct))
ggplot(part_prov, aes(x = reorder(provincia, pct), y = pct)) +
geom_col() +
coord_flip() +
labs(x = "Provincia", y = "% participación (banda ancha fija)",
title = paste0("Participación de banda ancha fija por provincia — ", ultimo_anio, " Q", ultimo_trimestre)) +
theme_minimal()principales <- df %>%
group_by(provincia) %>%
summarise(total_prov = sum(total, na.rm = TRUE)) %>%
arrange(desc(total_prov)) %>%
slice_head(n = 6) %>%
pull(provincia)
df %>%
filter(provincia %in% principales) %>%
mutate(periodo = paste0(anio, "-Q", trimestre)) %>%
group_by(provincia, periodo) %>%
summarise(total = sum(total, na.rm = TRUE)) %>%
ggplot(aes(x = periodo, y = total, color = provincia, group = provincia)) +
geom_line() +
geom_point(size = 1) +
theme_minimal() +
scale_y_continuous(labels = scales::label_number(big.mark = ",")) +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
labs(title = "Evolución de accesos - 6 principales provincias", x = "Periodo", y = "Accesos")# Guardar tabla nacional en csv
write_csv(nacional_q, file = "nacional_trimestral_accesos.csv")
# Guardar tabla top provincias
write_csv(top_provincias, file = "top_provincias_ultimo_periodo.csv")
# Guardar gráfico nacional como PNG
ggsave("serie_nacional_accesos.png", plot = plot_nacional, width = 10, height = 5)La evolución de los accesos a Internet en las provincias muestra un crecimiento sostenido de la banda ancha fija, consolidándose como la principal tecnología de conexión. El dial‑up se mantiene en niveles residuales, lo que confirma su obsolescencia en todo el país. Las provincias con mayor población concentran también la mayor cantidad de accesos, pero al analizar tasas de crecimiento se observan mejoras importantes en jurisdicciones medianas y pequeñas.
El análisis temporal evidencia incrementos estables trimestre a trimestre, lo que sugiere expansión de infraestructura y mayor adopción digital. Para una comprensión más profunda sería conveniente complementar estos resultados con indicadores de penetración por habitante, mapas regionales y variaciones interanuales. En general, los datos reflejan una tendencia positiva y un avance continuo en el acceso a la conectividad en Argentina.
## R version 4.5.2 (2025-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 10 x64 (build 19045)
##
## Matrix products: default
## LAPACK version 3.12.1
##
## locale:
## [1] LC_COLLATE=Spanish_Argentina.utf8 LC_CTYPE=Spanish_Argentina.utf8
## [3] LC_MONETARY=Spanish_Argentina.utf8 LC_NUMERIC=C
## [5] LC_TIME=Spanish_Argentina.utf8
##
## time zone: America/Buenos_Aires
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] gt_1.1.0 scales_1.4.0 janitor_2.2.1 readxl_1.4.5
## [5] lubridate_1.9.4 forcats_1.0.1 stringr_1.6.0 dplyr_1.1.4
## [9] purrr_1.2.0 readr_2.1.5 tidyr_1.3.1 tibble_3.3.0
## [13] ggplot2_4.0.1 tidyverse_2.0.0
##
## loaded via a namespace (and not attached):
## [1] sass_0.4.10 generics_0.1.4 xml2_1.4.1 stringi_1.8.7
## [5] hms_1.1.4 digest_0.6.38 magrittr_2.0.4 evaluate_1.0.5
## [9] grid_4.5.2 timechange_0.3.0 RColorBrewer_1.1-3 fastmap_1.2.0
## [13] cellranger_1.1.0 jsonlite_2.0.0 textshaping_1.0.4 jquerylib_0.1.4
## [17] cli_3.6.5 crayon_1.5.3 rlang_1.1.6 bit64_4.6.0-1
## [21] withr_3.0.2 cachem_1.1.0 yaml_2.3.10 parallel_4.5.2
## [25] tools_4.5.2 tzdb_0.5.0 vctrs_0.6.5 R6_2.6.1
## [29] lifecycle_1.0.4 snakecase_0.11.1 bit_4.6.0 fs_1.6.6
## [33] vroom_1.6.6 ragg_1.5.0 pkgconfig_2.0.3 pillar_1.11.1
## [37] bslib_0.9.0 gtable_0.3.6 glue_1.8.0 systemfonts_1.3.1
## [41] xfun_0.54 tidyselect_1.2.1 rstudioapi_0.17.1 knitr_1.50
## [45] farver_2.1.2 htmltools_0.5.8.1 rmarkdown_2.30 labeling_0.4.3
## [49] compiler_4.5.2 S7_0.2.1