El Ente Nacional de Comunicaciones (ENACOM) es el organismo autárquico y descentralizado del Estado argentino encargado de regular, supervisar y controlar los servicios de telecomunicaciones, radiodifusión, tecnologías de la información y las comunicaciones (TIC) y los servicios postales. Fue creado mediante el Decreto N.º 267/2015, a partir de la unificación de la Autoridad Federal de Servicios de Comunicación Audiovisual (AFSCA) y la Autoridad Federal de Tecnologías de la Información y las Comunicaciones (AFTIC) Poder Ejecutivo Nacional (2015).
Entre sus principales funciones se encuentran la administración del espectro radioeléctrico, el otorgamiento de licencias, la homologación de equipos, la protección de los derechos de los usuarios y la promoción del acceso equitativo a los servicios de comunicación en todo el territorio nacional. Asimismo, el ENACOM desempeña un papel fundamental en la implementación de políticas públicas destinadas a garantizar el acceso y la calidad de los servicios de comunicación en Argentina (Ente Nacional de Comunicaciones s.f., 2016).
El objetivo de este trabajo es explorar conjuntos de datos abiertos brindados por este organismo para realizar un análisis geoespacial con respecto a la conectividad disponible en distintas localidades de las provincias patagónicas de Neuquén y Río Negro. Para poder referenciar geográficamente los datos utilizados, se hará uso de conjuntos de datos adicionales provistos por distintas entidades gubernamentales. Por un lado, se hará uso del dataset de localidades provistos por la Base de Asentamientos Humanos de la República Argentina (BAHRA). Esta es una base de datos oficial y normalizada que reúne información sobre localidades, parajes, entidades y otros asentamientos humanos del territorio argentino. Su objetivo es identificar cada asentamiento mediante un nombre único, coordenadas geográficas y un código de referencia, facilitando la integración y análisis de información territorial proveniente de distintos organismos públicos Instituto Geográfico Nacional (IGN) and Instituto Nacional de Estadística y Censos (INDEC) (s.f.). Finalmente, se utilizará la capa de información geográfica de provincias provisto por el Instituto Geográfico Nacional (IGN). Dicho instituto constituye el organismo científico-técnico de la República Argentina responsable de la representación oficial del territorio nacional y de la producción, actualización y difusión de información geográfica. Sus actividades incluyen la elaboración de cartografía oficial, la generación de datos geoespaciales y el establecimiento de normas y marcos de referencia para la información territorial del país Instituto Geográfico Nacional (s.f.).
Los datos utilizados en este trabajo fueron obtenidos a través de dataset público provisto por el ENACOM. Este dataset contiene la cantidad de usuarios por localidad que acceden a algún tipo de conectividad discriminado por tipo de tecnología de manera trimestral (Junio del año 2026).
Los datos fueron importados a partir del siguiente fragmento de código:
#conectividad <- read_excel("./tecnologias_localidades_enacom.xlsx", skip = 1)
conectividad <- read_excel(
"./tecnologias_localidades_enacom.xlsx",
skip = 1,
) %>%
mutate(
# Convertimos la columna LinkIndec a string
LinkIndec = sprintf("%08d", LinkIndec),
# Convertimos la columna Accesos a valores enteros, removiendo primero los puntos
Accesos = as.numeric(gsub("\\.", "", Accesos))
)
str(conectividad)
## tibble [11,921 × 6] (S3: tbl_df/tbl/data.frame)
## $ LinkIndec : chr [1:11921] "06588100" "06588100" "06588100" "06588100" ...
## $ Provincia : chr [1:11921] "BUENOS AIRES" "BUENOS AIRES" "BUENOS AIRES" "BUENOS AIRES" ...
## $ Partido : chr [1:11921] "9 de Julio" "9 de Julio" "9 de Julio" "9 de Julio" ...
## $ Localidad : chr [1:11921] "9 de Julio" "9 de Julio" "9 de Julio" "9 de Julio" ...
## $ Tecnologia: chr [1:11921] "ADSL" "CABLEMODEM" "DIAL UP" "FIBRA OPTICA" ...
## $ Accesos : num [1:11921] 3092 3341 78 9104 566 ...
Primero analizamos la estructura del dataset
str(conectividad)
## tibble [11,921 × 6] (S3: tbl_df/tbl/data.frame)
## $ LinkIndec : chr [1:11921] "06588100" "06588100" "06588100" "06588100" ...
## $ Provincia : chr [1:11921] "BUENOS AIRES" "BUENOS AIRES" "BUENOS AIRES" "BUENOS AIRES" ...
## $ Partido : chr [1:11921] "9 de Julio" "9 de Julio" "9 de Julio" "9 de Julio" ...
## $ Localidad : chr [1:11921] "9 de Julio" "9 de Julio" "9 de Julio" "9 de Julio" ...
## $ Tecnologia: chr [1:11921] "ADSL" "CABLEMODEM" "DIAL UP" "FIBRA OPTICA" ...
## $ Accesos : num [1:11921] 3092 3341 78 9104 566 ...
Ahora mostramos las diez primeras filas del dataset.
mostrar_df(conectividad, n = 10, caption = "Internet Accesos Tecnologias Localidades")
A partir del dataset observado, vemos filas con la misma localidad, una por cada cantidad de accesos por tecnología. Para asegurar un buen análisis del dataset y buenas representaciones en mapas geográficos, se decidió realizar la operación PIVOT sobre el dataset. Esto resulta en un nuevo dataset en el que se obtiene una sola fila por localidad y se agrega una nueva columna por cada cantidad de accesos por tecnología.
# Realizamos la operacion pivot sobre el dataset conectividad
conectividad_localidad_pivot <- conectividad %>%
pivot_wider(
names_from = Tecnologia,
values_from = Accesos,
values_fill = 0
)
# Renombramos las columnas que tienen espacios para evitar problemas de formato
conectividad_localidad_pivot <- conectividad_localidad_pivot %>%
rename(
DIAL_UP = `DIAL UP`,
FIBRA_OPTICA = `FIBRA OPTICA`
)
mostrar_df(conectividad_localidad_pivot, n = 10, caption = "Internet Accesos Tecnologias Localidades PIVOT")
Para georreferenciar las localidades detalladas en el dataset del ENACOM, se introduce un segundo dataset que contiene las coordenadas geográficas de cada localidad de Argentina. Este dataset se obtuvo de BAHRA. Así, se hará la unión de ambos dataset a través de una operacion JOIN, utilizando como clave la columna LinkIndec del dataset tecnologias_localidades_enacom.xlsx y la columna codigo_aglomerado del dataset localidad_bahra.csv. A partir de esta integración se incorporaron las coordenadas geográficas (latitud y longitud) de cada localidad, permitiendo su representación espacial sobre un mapa.
Cargamos el dataset de localidades de BAHRA y mostramos sus columnas:
localidades_bahra <- read_csv("localidad_bahra.csv")
names(localidades_bahra)
## [1] "FID" "gid"
## [3] "nombre_geografico" "tipo_asentamiento"
## [5] "codigo_asentamiento" "nombre_aglomerado"
## [7] "codigo_aglomerado" "nombre_departamento"
## [9] "codigo_indec_departamento" "nombre_provincia"
## [11] "codigo_indec_provincia" "latitud_grado_decimal"
## [13] "longitud_grado_decimal" "latitud_grado_sexagecimal"
## [15] "longitud_grado_sexagecimal" "fuente_de_captura"
## [17] "geom"
Seleccionamos solo las columnas que son de nuestro interés:
localidades_bahra <- localidades_bahra %>%
select(nombre_geografico, tipo_asentamiento, codigo_asentamiento, nombre_aglomerado, nombre_departamento, nombre_provincia, latitud_grado_decimal, longitud_grado_decimal, geom)
Ahora realizamos la operación JOIN entre los dos datasets:
conectividad_geo <- conectividad_localidad_pivot %>%
left_join(
localidades_bahra,
by = c("LinkIndec" = "codigo_asentamiento")
) %>%
# Eliminamos aquellas filas que contienen alguna conordenada nula
filter(
!is.na(longitud_grado_decimal),
!is.na(latitud_grado_decimal)
)
Dataset resultante:
mostrar_df(conectividad_geo, 10)
Es importante mencionar que el dataset contiene información de conectividad de todas las localidades de la República Argentina. A pesar de poder discriminar localidades por provincia, se decidió postponer, a modo de práctica, esta tarea para la sección siguiente. De esta forma, se puede aplicar la operación geométrica de intersección entre los polígonos de las provincias patagónicas con las localidades del país, resultando en aquellos puntos contenidos por las provincias.
En esta tabla se describen los atributos más importantes del dataset resultante, junto con su tipo de dato, escala de medición y una breve descripción del mismo.
# Creamos un Dataframe con los datos solicitados
tabla_descriptiva_df = data.frame(
Atributo=c("LinkIndec", "Provincia", "Localidad", "FIBRA_OPTICA", "WIRELESS", "latitud_grado_decimal", "longitud_grado_decimal"),
TipoDato=c("String", "String", "String", "Entero", "Entero", "Real", "Real"),
EscalaMedicion=c("Nominal", "Nominal", "Nominal", "Ratio", "Ratio", "Ratio", "Ratio"),
Descripcion=c("Identificador unico provisto por el INDEC para identificar univocamente las localidades en los datasets del INDEC.", "Nombre de la provincia argentina a la cual pertenece la localidad.", "Nombre de la localidad referenciada.", "Cantidad de usuarios que poseen fibra optica en la localidad.", "Cantidad de usuarios que posee internet inalambrico.", "Coordenada de latitud de la localidad.", "Coordenada de longitud de la localidad.")
)
# Exportamos el Dataframe como un excel con formato xlsx
write_xlsx(tabla_descriptiva_df, "tabla_descriptiva.xlsx")
# Importamos el archivo xlsx exportado anteriormente en el directorio actual
tabla_descriptiva_excel <- read_excel("./tabla_descriptiva.xlsx")
# Mostramos la tabla
kable(tabla_descriptiva_excel, caption = "Tabla Descriptiva de algunos de los atributos del dataset")
| Atributo | TipoDato | EscalaMedicion | Descripcion |
|---|---|---|---|
| LinkIndec | String | Nominal | Identificador unico provisto por el INDEC para identificar univocamente las localidades en los datasets del INDEC. |
| Provincia | String | Nominal | Nombre de la provincia argentina a la cual pertenece la localidad. |
| Localidad | String | Nominal | Nombre de la localidad referenciada. |
| FIBRA_OPTICA | Entero | Ratio | Cantidad de usuarios que poseen fibra optica en la localidad. |
| WIRELESS | Entero | Ratio | Cantidad de usuarios que posee internet inalambrico. |
| latitud_grado_decimal | Real | Ratio | Coordenada de latitud de la localidad. |
| longitud_grado_decimal | Real | Ratio | Coordenada de longitud de la localidad. |
Ahora mostramos medidas resumenes del atributo FIBRA_OPTICA y WIRELESS
summary(conectividad_geo$FIBRA_OPTICA)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0 0 0 1210 127 264997
summary(conectividad_geo$WIRELESS)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0 0.0 1.0 128.5 72.0 16209.0
Mostramos un histograma de la variable FIBRA_OPTICA
hist(conectividad_geo$FIBRA_OPTICA)
En esta sección se mostrarán los pasos realizados para mostrar un mapa web con el dataset final obtenido en la sección anterior. Primero se definirá un mapa base utilizando el proveedor de mapas Argenmap. Luego, de forma iterativa, se agregarán distintas capas en combinación con operaciones geométricas para construir el mapa final, es decir, un mapa que marque los límites de las provincias argentinas de Neuquén y Río Negro. Además, para cada provincia se mostrarán todas sus localidades, indicando para cada localidad información cuantitativa acerca de los distintos tipos de conectividad presentes en las localidades. Finalmente, para cada provincia se pueden apreciar los valores totales por provincia de accesos por tipo de conectividad.
# Creamos un objeto espacial a partir del dataset de conectividad
conectividad_sf <- st_as_sf(
conectividad_geo,
wkt = "geom",
crs = 4326
)
# Cargamos el archivo shp de los polígonos de las provincias
provincias <-st_read("./provincia/provinciaPolygon.shp")
## Reading layer `provinciaPolygon' from data source
## `C:\Users\tomyl\Downloads\provincia\provinciaPolygon.shp' using driver `ESRI Shapefile'
## Simple feature collection with 24 features and 8 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -74 ymin: -90 xmax: -25 ymax: -21.78086
## Geodetic CRS: WGS 84
provincias[] <- lapply(provincias, function(x) {
if (is.character(x))
iconv(x, from = "latin1", to = "UTF-8")
else
x
})
# Filtramos las provincias por el campo nam, obteniendo solo Neuquén y Río Negro
patagonia <- provincias %>%
filter(
# Eliminamos acentos para evitar problemas al comparar strings
stri_trans_general(nam, "Latin-ASCII") %in% c(
"Neuquen",
"Rio Negro"
)
)
# Obtenemos solo los puntos de las localidades dentro de Neuquén y Río Negro
conectividad_patagonia <- st_intersection(conectividad_sf, patagonia)
## Warning: attribute variables are assumed to be spatially constant throughout
## all geometries
# Referenciamos las columnas que queremos sumar al hacer el agrupamiento
variables_tecnologias <- c(
"ADSL",
"CABLEMODEM",
"DIAL_UP",
"FIBRA_OPTICA",
"SATELITAL",
"WIRELESS",
"CELULAR"
)
# De nuestro conjunto de puntos agrupamos por provincia y sumamos cada una de las variables de interes
# Además, sumamos el total de todos los accesos por conectividad por provincia y el total de localidades por provincia
totales_provincia <- conectividad_patagonia |>
st_drop_geometry() |>
group_by(nombre_provincia) |>
summarise(
localidades = n(),
across(all_of(variables_tecnologias), ~sum(.x, na.rm = TRUE))
) |>
mutate(
total = rowSums(across(all_of(variables_tecnologias)))
)
# Agregamos la información estadística al conjunto de poligonos de provincias
patagonia$provincia <- stri_trans_general(patagonia$nam, "Latin-ASCII")
totales_provincia$provincia <- stri_trans_general(
totales_provincia$nombre_provincia,
"Latin-ASCII"
)
patagonia <- left_join(
patagonia,
totales_provincia,
by = "provincia"
)
# Se construye el HTML que contiene la informacion estadistica por provincia
patagonia$label_html <- apply(
patagonia,
1,
function(x){
filas <- paste0(
"<tr><td>", variables_tecnologias, "</td>",
"<td style='text-align:right'><b>",
format(as.numeric(x[variables_tecnologias]), big.mark = ".", decimal.mark = ","),
"</b></td></tr>",
collapse = ""
)
paste0(
"<div style='min-width:240px'>",
"<h4 style='margin-top:0'>", x["nam"], "</h4>",
"<table style='width:100%;margin-bottom:8px'>",
"<tr><td><b>Localidades</b></td><td align='right'>",
x["localidades"],
"</td></tr>",
"<tr><td><b>Total accesos</b></td><td align='right'><b>",
format(as.numeric(x["total"]), big.mark=".", decimal.mark=","),
"</b></td></tr>",
"</table>",
"<hr>",
"<table style='width:100%'>",
filas,
"</table>",
"</div>"
)
}
)
# Agregamos el total de accesos por localidad
conectividad_patagonia <- conectividad_patagonia |>
mutate(
across(
all_of(variables_tecnologias),
~ as.numeric(gsub("\\.", "", .))
),
total_accesos = rowSums(
across(all_of(variables_tecnologias)),
na.rm = TRUE
)
)
# Obtenemos el maximo valor de accesos para normalizar el tamaño de las burbujas de localidades
maximo <- max(conectividad_patagonia$total_accesos, na.rm = TRUE)
conectividad_patagonia <- conectividad_patagonia |>
mutate(
radio_burbuja = 5 + 22 * sqrt(total_accesos / maximo)
)
# Creamos una paleta de colores y calculamos el tamaño para las burbujas
id="6q2b3"
pal <- colorFactor(
palette = c("steelblue", "darkorange"),
domain = patagonia$provincia
)
radio <- colorNumeric(
palette = "viridis",
domain = conectividad_patagonia$total_accesos
)
# Definimos un mapa base de Argenmap para ser reutilizado
mapa_base <- leaflet() %>%
addTiles(
urlTemplate = "https://wms.ign.gob.ar/geoserver/gwc/service/tms/1.0.0/capabaseargenmap@EPSG%3A3857@png/{z}/{x}/{-y}.png",
attribution = '<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a> | <a href="http://www.ign.gob.ar/AreaServicios/Argenmap/IntroduccionV2" target="_blank">Instituto Geográfico Nacional</a> + <a href="http://www.osm.org/copyright" target="_blank">OpenStreetMap</a>'
)
mapa_localidades_nacion <- mapa_base %>%
addPolygons(
data = patagonia,
fillOpacity = 0.35,
color = "black",
weight = 3,
fillColor = ~pal(provincia),
label = ~lapply(label_html, htmltools::HTML),
labelOptions = labelOptions(
direction = "auto",
opacity = 0.95,
textsize = "13px",
style = list(
"background-color" = "white",
"padding" = "10px",
"border-radius" = "6px"
)
)
) |>
setView(
lng = -67.5,
lat = -39,
zoom = 6
) %>%
addCircleMarkers(
data = conectividad_patagonia,
radius = ~radio_burbuja,
color = "black",
weight = 1,
fillColor = ~radio(total_accesos),
fillOpacity = 0.8,
popup = ~paste0(
"<h4>", nombre_geografico, "</h4>",
"<b>", tipo_asentamiento, "</b><br>",
nombre_departamento, " - ", nombre_provincia,
"<hr style='margin:5px 0;'>",
"<table style='width:100%;'>",
ifelse(ADSL > 0,
paste0("<tr><td>ADSL</td><td align='right'>", ADSL, "</td></tr>"),
""),
ifelse(CABLEMODEM > 0,
paste0("<tr><td>Cablemódem</td><td align='right'>", CABLEMODEM, "</td></tr>"),
""),
ifelse(DIAL_UP > 0,
paste0("<tr><td>Dial Up</td><td align='right'>", DIAL_UP, "</td></tr>"),
""),
ifelse(FIBRA_OPTICA > 0,
paste0("<tr><td>Fibra óptica</td><td align='right'>", FIBRA_OPTICA, "</td></tr>"),
""),
ifelse(SATELITAL > 0,
paste0("<tr><td>Satelital</td><td align='right'>", SATELITAL, "</td></tr>"),
""),
ifelse(WIRELESS > 0,
paste0("<tr><td>Wireless</td><td align='right'>", WIRELESS, "</td></tr>"),
""),
ifelse(CELULAR > 0,
paste0("<tr><td>Celular</td><td align='right'>", CELULAR, "</td></tr>"),
""),
"<tr><td><b>Total accesos</b></td><td align='right'><b>",
format(as.numeric(total_accesos), big.mark=".", decimal.mark=","),
"</table>"
)
)
mapa_localidades_nacion
Para realizar el dropeo de la geometría del dataset de localidades de la patagonia (Neuquén y Río Negro) realizamos la operación st_drop_geometry para eliminar la columna de geometría geometry.
# Hacemos el dropeo de la geometria
dataset_sin_geo = st_drop_geometry(conectividad_patagonia)
glimpse(conectividad_patagonia)
## Rows: 224
## Columns: 32
## $ LinkIndec <chr> "26007010", "62049010", "62049020", "62049030",…
## $ Provincia <chr> "CHUBUT", "RIO NEGRO", "RIO NEGRO", "RIO NEGRO"…
## $ Partido <chr> "Biedma", "9 de Julio", "9 de julio", "9 de Jul…
## $ Localidad <chr> "Arroyo Verde", "Comicó", "Cona Niyeu", "Minist…
## $ ADSL <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 2…
## $ CABLEMODEM <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ DIAL_UP <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,…
## $ FIBRA_OPTICA <dbl> 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 30, 0, 0, 1179, 0…
## $ SATELITAL <dbl> 4, 12, 28, 28, 33, 55, 0, 1, 0, 3, 7, 30, 6, 16…
## $ WIRELESS <dbl> 0, 0, 0, 272, 0, 44, 2, 0, 2, 62, 0, 0, 67, 280…
## $ Otros <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ CELULAR <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ OTROS <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ WIMAX <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ nombre_geografico <chr> "Arroyo Verde", "Comicó", "Cona Niyeu", "Minist…
## $ tipo_asentamiento <chr> "Localidad simple", "Localidad simple", "Locali…
## $ nombre_aglomerado <chr> "Arroyo Verde", "Comicó", "Cona Niyeu", "Minist…
## $ nombre_departamento <chr> "Biedma", "9 de Julio", "9 de Julio", "9 de Jul…
## $ nombre_provincia <chr> "Río Negro", "Río Negro", "Río Negro", "Río Neg…
## $ latitud_grado_decimal <dbl> -41.99630, -41.07070, -41.86559, -40.50704, -41…
## $ longitud_grado_decimal <dbl> -65.29317, -67.47807, -66.93866, -67.26062, -67…
## $ gid <int> 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,…
## $ entidad <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ fna <chr> "Provincia de Río Negro", "Provincia de Río Neg…
## $ gna <chr> "Provincia", "Provincia", "Provincia", "Provinc…
## $ nam <chr> "Río Negro", "Río Negro", "Río Negro", "Río Neg…
## $ in1 <chr> "62", "62", "62", "62", "62", "62", "62", "62",…
## $ fdc <chr> "Geografía", "Geografía", "Geografía", "Geograf…
## $ sag <chr> "IGN", "IGN", "IGN", "IGN", "IGN", "IGN", "IGN"…
## $ geom <POINT [°]> POINT (-65.29317 -41.9963), POINT (-67.47…
## $ total_accesos <dbl> 4, 12, 28, 300, 33, 106, 2, 1, 2, 65, 37, 30, 7…
## $ radio_burbuja <dbl> 5.165712, 5.287022, 5.438434, 6.435112, 5.47597…
Durante las etapas de transformación y visualización de datos se han realizado diversas operaciones sobre el dataset en conjunto con otros datasets para agrupar datos, crear nuevas columnas y generar representaciones gráficas significativas a través de operaciones SQL y geoespaciales. A continuación se detallan las más relevantes.
conectividad_localidad_pivot <- conectividad %>%
pivot_wider(
names_from = Tecnologia,
values_from = Accesos,
values_fill = 0
)
conectividad_localidad_pivot <- conectividad_localidad_pivot %>%
rename(
DIAL_UP = `DIAL UP`,
FIBRA_OPTICA = `FIBRA OPTICA`
)
localidades_bahra <- localidades_bahra %>%
select(nombre_geografico, tipo_asentamiento, codigo_asentamiento, nombre_aglomerado, nombre_departamento, nombre_provincia, latitud_grado_decimal, longitud_grado_decimal, geom)
conectividad_geo <- conectividad_localidad_pivot %>%
left_join(
localidades_bahra,
by = c("LinkIndec" = "codigo_asentamiento")
) %>%
filter(
!is.na(longitud_grado_decimal),
!is.na(latitud_grado_decimal)
)
conectividad_patagonia <- st_intersection(conectividad_sf, patagonia)
A partir de las operaciones SQL y geoespaciales y la información graficada en el mapa, se pretenden responder las siguientes preguntas:
¿Cuál es la cantidad de accesos a internet que hay por tipo de tecnología en el último trimestre en una localidad de Neuquén o Río Negro?
¿Cuál es la cantidad de accesos a internet total en el último trimestre en una localidad de Neuquén o Río Negro?
¿Cuantas localidades hay en total por provincia?
¿Cuál es la cantidad de accesos a internet discriminado por tecnología que hay por provincia en el último trimestre?
¿Cuál es el total de accesos a internet que hay por provincia en el último trimestre?