1 Introducción
El poder judicial chileno se divide en 17 Cortes de Apelaciones dentro de cada cual está contenida toda la información disponibibilizada en https://www.pjud.cl/estadisticas/estadisticas-cortes-juzgados.
Por medio de un programa de descarga aplicado a ésta web, se obtuvo toda la data disponible en ella mes a mes entre los años 2010 y 2021.
Nos encontramos con el problema de la unificación de toda ésta data pues contienen distinta información y formatos. Solucionamos el problema agrupando por combinación de cabeceras, lo que siempre nos dió un conjunto acotado de información del mismo tipo que pudimos unir, y nos permitió un criterio para llegar a la información deseada para poder expresarla gráficamente.
Las combinaciones obtenidas para la Corte de Apelaciones de Antofagasta fueron:
1.-Materia-Total-Corte-Tribunal-Competencia-Informe-Año-Mes
2.-Tipo Término-Materia-Total-Corte-Tribunal-Competencia-Informe-Año-Mes
3.-Materia-Ingresos-Corte-Tribunal-Competencia-Informe-Año-Mes
4.-Tipo Audiencia-Cantidad de Audiencias-Duración Promedio en Minutos (MM)-Corte-Tribunal-Competencia-Informe-Año-Mes
5.-Tipo de Causa-Total-Corte-Tribunal-Competencia-Informe-Año-Mes
6.-Tribunal-Total-Corte-Competencia-Informe-Año-Mes
7.-Tribunal-Motivo Término-Total-Corte-Competencia-Informe-Año-Mes
8.-Secretaría-Total-Corte-Tribunal-Competencia-Informe-Año-Mes
9.-Año Ingreso Corte-Total-Corte-Tribunal-Competencia-Informe-Año-Mes
10.-Sala-Total-Corte-Tribunal-Competencia-Informe-Año-Mes
El presente trabajo contiene el resultado para la Corte de Apelaciones de Antofagasta, en la que sobre cada una de las 101 tablas generadas se pueden efectuar filtros y obtener lo que se quiera, pues toda la data está contenida ahí bajo el criterio de Tribunal, mes, año e informe y algunas veces competencia (presente en los pleitos civiles y familiares)
Para verificar la integridad de los datos se aplicó un muestreo aleatorio simple dándonos un 100% de aciertos. Se incluye el método en éste trabajo también y se deduce entonces que si el mismo programa es aplicado a todas las cortes obtendremos resultados consistentes.
En éste momento nos encontramos a la espera de la descarga total de las Cortes y unirlas, con la intención de generar sólo 10 tablas globales para llegar a una sola final.
Las tablas generadas se encuentran el nuestro repositorio ds_pjud y en Notion.
2 Parte I: Unificación de las tablas
2.1 Leemos los nombres de los excels (8056 tablas)
<- tibble(dir("Corte de Apelaciones de Antofagasta/", pattern = ".xlsx"))
archivos names(archivos)[1] <- "value"
<- archivos[c(1:10),]
abc
datatable(abc, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
2.2 Obtenemos las combinaciones de las cabeceras
Transformamos cada nombre leído, correspondiente a un excel leyéndolo a un dataframe y extraemos todas las combinaciones existentes de las cabeceras:
<- nrow(archivos)
limite <- vector("list", length = limite)
output
for (i in 1:limite ) {
tryCatch( {
<- paste0("Corte de Apelaciones de Antofagasta/",archivos$value[i])
direccion <- import(direccion)
cargado
###-------------
<- ""
columnas for (j in 1:ncol(cargado)) {
<- paste(columnas,colnames(cargado)[j],sep = "-")
columnas
}
<- columnas
output[[i]] error = function(msg){
}, print(direccion)})
}<- unique(as_tibble(unlist(output)))
combinaciones
datatable(combinaciones, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
for (m in 1:nrow(combinaciones)) {
assign(paste0("tabla_",m),"") # se crean variables bacías
}for (i in archivos$value[1:nrow(archivos)]) { # recorre todos los archivos
# for (i in archivos$value[1:100]) { # recorre todos los archivos
tryCatch(
{<- paste0("Corte de Apelaciones de Antofagasta/",i)
direccion <- read_xlsx(direccion)
cargado
<- ""
columnas for (j in 1:ncol(cargado)) {
<- paste(columnas,colnames(cargado)[j],sep = "-") # extrae combinaciones
columnas
}
if(columnas == combinaciones[1,1]){ tabla_1 <- rbind(tabla_1,cargado)}
if(columnas == combinaciones[2,1]){ tabla_2 <- rbind(tabla_2,cargado)}
if(columnas == combinaciones[3,1]){ tabla_3 <- rbind(tabla_3,cargado)}
if(columnas == combinaciones[4,1]){ tabla_4 <- rbind(tabla_4,cargado)}
if(columnas == combinaciones[5,1]){ tabla_5 <- rbind(tabla_5,cargado)}
if(columnas == combinaciones[6,1]){ tabla_6 <- rbind(tabla_6,cargado)}
if(columnas == combinaciones[7,1]){ tabla_7 <- rbind(tabla_7,cargado)}
if(columnas == combinaciones[8,1]){ tabla_8 <- rbind(tabla_8,cargado)}
if(columnas == combinaciones[9,1]){ tabla_9 <- rbind(tabla_9,cargado)}
if(columnas == combinaciones[10,1]){ tabla_10 <- rbind(tabla_10,cargado)}
error = function(msg){
}, print(direccion)})
}
2.3 Unimos por cada una de las 10 combinaciones generadas, desplegando los 100 primeros registros de las tablas:
2.3.1 -Materia-Total-Corte-Tribunal-Competencia-Informe-Año-Mes
<- tabla_1[c(1:100),]
abc
datatable(abc, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
2.3.2 -Tipo Término-Materia-Total-Corte-Tribunal-Competencia-Informe-Año-Mes
<- tabla_2[c(1:100),]
abc
datatable(abc, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
2.3.3 -Materia-Ingresos-Corte-Tribunal-Competencia-Informe-Año-Mes
<- tabla_3[c(1:100),]
abc
datatable(abc, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
2.3.4 -Tipo Audiencia-Cantidad de Audiencias-Duración Promedio en Minutos (MM)-Corte-Tribunal-Competencia-Informe-Año-Mes
<- tabla_4[c(1:100),]
abc
datatable(abc, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
2.3.5 -Tipo de Causa-Total-Corte-Tribunal-Competencia-Informe-Año-Mes
<- tabla_5[c(1:100),]
abc
datatable(abc, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
2.3.6 -Tribunal-Total-Corte-Competencia-Informe-Año-Mes
<- tabla_6[c(1:100),]
abc
datatable(abc, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
2.3.7 -Tribunal-Motivo Término-Total-Corte-Competencia-Informe-Año-Mes
<- tabla_7[c(1:100),]
abc
datatable(abc, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
2.3.8 -Secretaría-Total-Corte-Tribunal-Competencia-Informe-Año-Mes
<- tabla_8[c(1:100),]
abc
datatable(abc, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
2.3.9 -Año Ingreso Corte-Total-Corte-Tribunal-Competencia-Informe-Año-Mes
<- tabla_9[c(1:100),]
abc
datatable(abc, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
2.3.10 -Sala-Total-Corte-Tribunal-Competencia-Informe-Año-Mes
<- tabla_10[c(1:100),]
abc
datatable(abc, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
# tabla_1
# tabla_2
# tabla_3
# tabla_4
# tabla_5
# tabla_6
# tabla_7
# tabla_8
# tabla_9
# tabla_10
2.4 Generamos los xlsx
write_xlsx(tabla_1,"union_tablas_Antofagasta/tabla_1.xlsx")
write_xlsx(tabla_2,"union_tablas_Antofagasta/tabla_2.xlsx")
write_xlsx(tabla_3,"union_tablas_Antofagasta/tabla_3.xlsx")
write_xlsx(tabla_4,"union_tablas_Antofagasta/tabla_4.xlsx")
write_xlsx(tabla_5,"union_tablas_Antofagasta/tabla_5.xlsx")
write_xlsx(tabla_6,"union_tablas_Antofagasta/tabla_6.xlsx")
write_xlsx(tabla_7,"union_tablas_Antofagasta/tabla_7.xlsx")
write_xlsx(tabla_8,"union_tablas_Antofagasta/tabla_8.xlsx")
write_xlsx(tabla_9,"union_tablas_Antofagasta/tabla_9.xlsx")
write_xlsx(tabla_10,"union_tablas_Antofagasta/tabla_10.xlsx")
3 Parte II: Aplicación de un muestreo aleatorio simple (MAS) a las tablas unidas.
3.1 MAS a la tabla 1
Hacemos un MAS generando 10 números aleatorios entre 1 y 44562
nrow(tabla_1)
## [1] 44562
el seed lo hacemos variar entre 1 y 1000
set.seed(546)
<- sample(1:44562, 10, replace=TRUE)
aleatorios
<- data.frame()
receptaculo
for(i in aleatorios){
<- tabla_1[i,]
resultado <- rbind(receptaculo,resultado)
receptaculo
}
datatable(receptaculo, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
3.2 MAS a la tabla 2
Hacemos un MAS generando 10 números aleatorios entre 1 y 49836
nrow(tabla_2)
## [1] 49836
el seed lo hacemos variar entre 1 y 1000
set.seed(351)
<- sample(1:49836 , 10, replace=TRUE)
aleatorios
<- data.frame()
receptaculo
for(i in aleatorios){
<- tabla_2[i,]
resultado <- rbind(receptaculo,resultado)
receptaculo
}datatable(receptaculo, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
3.3 MAS a la tabla 3
Hacemos un MAS generando 10 números aleatorios entre 1 y 14640
nrow(tabla_3)
## [1] 14640
el seed lo hacemos variar entre 1 y 1000
set.seed(888)
<- sample(1:14640 , 10, replace=TRUE)
aleatorios
<- data.frame()
receptaculo
for(i in aleatorios){
<- tabla_3[i,]
resultado <- rbind(receptaculo,resultado)
receptaculo
}datatable(receptaculo, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
3.4 MAS a la tabla 4
Hacemos un MAS generando 10 números aleatorios entre 1 y 11873
nrow(tabla_4)
## [1] 11873
el seed lo hacemos variar entre 1 y 1000
set.seed(3)
<- sample(1:11873 , 10, replace=TRUE)
aleatorios
<- data.frame()
receptaculo
for(i in aleatorios){
<- tabla_4[i,]
resultado <- rbind(receptaculo,resultado)
receptaculo
}datatable(receptaculo, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
3.5 MAS a la tabla 5
Hacemos un MAS generando 10 números aleatorios entre 1 y 5268
nrow(tabla_5)
## [1] 5268
el seed lo hacemos variar entre 1 y 1000
set.seed(67)
<- sample(1:5268 , 10, replace=TRUE)
aleatorios
<- data.frame()
receptaculo
for(i in aleatorios){
<- tabla_5[i,]
resultado <- rbind(receptaculo,resultado)
receptaculo
}datatable(receptaculo, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
3.6 MAS a la tabla 6
Hacemos un MAS generando 10 números aleatorios entre
el seed lo hacemos variar entre 1 y 1000
set.seed(136)
<- sample(1:nrow(tabla_6), 10, replace=TRUE)
aleatorios <- data.frame()
receptaculo
for(i in aleatorios){
<- tabla_6[i,]
resultado <- rbind(receptaculo,resultado)
receptaculo
}datatable(receptaculo, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
3.7 MAS a la tabla 7
Hacemos un MAS generando 10 números aleatorios entre
el seed lo hacemos variar entre 1 y 1000
set.seed(876)
<- sample(1:nrow(tabla_7), 10, replace=TRUE)
aleatorios
<- data.frame()
receptaculo
for(i in sort(aleatorios)){
<- tabla_7[i,]
resultado <- rbind(receptaculo,resultado)
receptaculo
}datatable(receptaculo, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
3.8 MAS a la tabla 8
Hacemos un MAS generando 10 números aleatorios entre
el seed lo hacemos variar entre 1 y 1000
set.seed(234)
<- sample(1:nrow(tabla_8), 10, replace=TRUE)
aleatorios
<- data.frame()
receptaculo
for(i in sort(aleatorios)){
<- tabla_8[i,]
resultado <- rbind(receptaculo,resultado)
receptaculo
}datatable(receptaculo, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
3.9 MAS a la tabla 9
Hacemos un MAS generando 10 números aleatorios entre
el seed lo hacemos variar entre 1 y 1000
set.seed(546)
<- sample(1:nrow(tabla_9), 10, replace=TRUE)
aleatorios
<- data.frame()
receptaculo
for(i in sort(aleatorios)){
<- tabla_9[i,]
resultado <- rbind(receptaculo,resultado)
receptaculo
}datatable(receptaculo, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
3.10 MAS a la tabla 10
Hacemos un MAS generando 10 números aleatorios entre
el seed lo hacemos variar entre 1 y 1000
set.seed(289)
<- sample(1:nrow(tabla_10), 10, replace=TRUE)
aleatorios
<- data.frame()
receptaculo
for(i in sort(aleatorios)){
<- tabla_10[i,]
resultado <- rbind(receptaculo,resultado)
receptaculo
}datatable(receptaculo, extensions = 'Buttons', escape = FALSE, rownames = TRUE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'tabla'),
list(extend='pdf',
filename= 'tabla')),
text = 'Download')), scrollX = TRUE))
Se compara el muestreo con la data extrayéndola en forma manual de https://www.pjud.cl coincidiendo el 100%.