Introducción

Fuente de datos

Microdatos del censo agropecuario nacional

https://portal.gis.mag.gov.py/arcgis/apps/sites/#/geoportal/pages/microdatos

Precesamiento de datos

Librerias necesarias

#install.packages("maps", "tmaptools", "tmap")
library("maps")
## Warning: package 'maps' was built under R version 4.3.3
library("tmaptools")
## Warning: package 'tmaptools' was built under R version 4.3.3
#library("rgdal")
#library("OpenStreetMap")
library("sf")
## Warning: package 'sf' was built under R version 4.3.3
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
library("raster")
## Warning: package 'raster' was built under R version 4.3.3
## Loading required package: sp
## Warning: package 'sp' was built under R version 4.3.3
library("dplyr")
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:raster':
## 
##     intersect, select, union
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library("spData")
## Warning: package 'spData' was built under R version 4.3.3
## To access larger datasets in this package, install the spDataLarge
## package with: `install.packages('spDataLarge',
## repos='https://nowosad.github.io/drat/', type='source')`
library("tmap")    # for static and interactive maps
## Warning: package 'tmap' was built under R version 4.3.3
library("leaflet") # for interactive maps
## Warning: package 'leaflet' was built under R version 4.3.3
library("ggplot2") # tidyverse data visualization package
## Warning: package 'ggplot2' was built under R version 4.3.3
#library("spDataLarge")
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.3
## Warning: package 'tibble' was built under R version 4.3.3
## Warning: package 'tidyr' was built under R version 4.3.3
## Warning: package 'readr' was built under R version 4.3.3
## Warning: package 'purrr' was built under R version 4.3.3
## Warning: package 'stringr' was built under R version 4.3.3
## Warning: package 'forcats' was built under R version 4.3.3
## Warning: package 'lubridate' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.1
## ✔ readr     2.1.5
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ tidyr::extract() masks raster::extract()
## ✖ dplyr::filter()  masks stats::filter()
## ✖ dplyr::lag()     masks stats::lag()
## ✖ purrr::map()     masks maps::map()
## ✖ dplyr::select()  masks raster::select()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Carga de los datos

# can<- read_dta("G:/Mi unidad/FACEN_BIGDATA/CAN2022SanPedro/BASE_CAN2022_DATOS_GENERALES_P2.dta")
# names(can)
# 
# # 3. Guardar como CSV
# write_csv(
#   can,
#   "G:/Mi unidad/FACEN_BIGDATA/CAN2022SanPedro/BASE_CAN2022_DATOS_GENERALES_P2.csv"
# )
# cargar la base 
library(readr)

can <- read_delim(
  "G:/Mi unidad/FACEN_BIGDATA/CAN2022SanPedro/BASE_CAN2022_DATOS_GENERALES_P2.csv",
  delim = ",",
  show_col_types = FALSE
)
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
##   dat <- vroom(...)
##   problems(dat)
names(can)
##   [1] "ID_FCA_ALEATORIO" "CLASIFICANEW"     "DPTO_PROC"       
##   [4] "DSTO_PROC"        "tipoi"            "tipofinca"       
##   [7] "p5000"            "menores_total"    "mayores_total"   
##  [10] "p7001_sn"         "p7021p"           "p7021p_nosabe"   
##  [13] "p7033p"           "p7033p_nosabe"    "p7221t"          
##  [16] "p7221t_nosabe"    "p7223t"           "p7223t_nosabe"   
##  [19] "p8000_1"          "p8000_3"          "p9001"           
##  [22] "p9000_total"      "p10001"           "p10002"          
##  [25] "p10003"           "p10004"           "p10005"          
##  [28] "p10006"           "p10007"           "p10008"          
##  [31] "p10009"           "p10000_total"     "p12000_sn"       
##  [34] "p12000_total"     "p12000b_total"    "p13300_total"    
##  [37] "p14000_sn"        "p14000_total"     "p15000_sn"       
##  [40] "p15000_total"     "p16000_sn"        "p16000_total"    
##  [43] "p18000_sn"        "p18002"           "XP18003_1"       
##  [46] "XP18003_2"        "XP18003_3"        "p18003_esp"      
##  [49] "p18003_0"         "p18003_1"         "p18003_2"        
##  [52] "p18003_3"         "p19100_sn"        "p19101"          
##  [55] "p19102"           "p19103"           "p19104"          
##  [58] "p19105"           "p19106"           "p19107"          
##  [61] "p19108"           "p19109"           "p19110"          
##  [64] "p19111"           "p19112"           "p19119"          
##  [67] "p19121"           "p19122"           "p19123"          
##  [70] "p19123_nosabe"    "xp19124_1"        "xp19124_2"       
##  [73] "xp19124_3"        "xp19124_4"        "p19125_1"        
##  [76] "p19131"           "p19132"           "p19133"          
##  [79] "p19135_1_sn"      "p19136_sn"        "p19139_sn"       
##  [82] "p19140_sn"        "p19300_sn"        "p19303_total"    
##  [85] "raza_oveja_total" "p19400_sn"        "p19405_total"    
##  [88] "raza_cabra_total" "p19500_sn"        "p19509_total"    
##  [91] "p19700_sn"        "p19701"           "p19710"          
##  [94] "p19800_sn"        "p19802"           "p19802_nosabe"   
##  [97] "p210051_sn"       "p21010_sn"        "p21011_sn"       
## [100] "p21013_sn"        "p21014_sn"        "p21016_sn"       
## [103] "p21017_sn"        "p21018_sn"        "p21018_1"        
## [106] "XP21018_2_1"      "XP21018_2_2"      "XP21018_2_3"     
## [109] "XP21018_2_4"      "p22000_sn"        "p23100_sn"       
## [112] "XP23101_1"        "XP23101_2"        "XP23101_3"       
## [115] "XP23101_4"        "XP23101_5"        "XP23101_6"       
## [118] "XP23101_7"        "XP23102_1_1"      "XP23102_1_2"     
## [121] "XP23102_1_3"      "XP23102_1_4"      "XP23102_1_5"     
## [124] "XP23102_1_6"      "XP23102_1_7"      "XP23102_1_8"     
## [127] "XP23102_1_9"      "XP23102_1_10"     "XP23102_1_11"    
## [130] "XP23102_1_12"     "XP23102_3_1"      "XP23102_3_2"     
## [133] "XP23102_3_3"      "XP23102_3_4"      "XP23102_3_5"     
## [136] "XP23102_3_6"      "XP23102_3_7"      "XP23102_3_8"     
## [139] "XP23102_3_9"      "XP23102_3_10"     "XP23102_3_11"    
## [142] "XP23102_3_12"     "p23150_sn"        "p23200_sn"       
## [145] "XP23201_1"        "XP23201_2"        "XP23201_3"       
## [148] "XP23201_4"        "XP23201_5"        "XP23201_6"       
## [151] "XP23202_1_1"      "XP23202_1_2"      "XP23202_1_3"     
## [154] "XP23202_1_4"      "XP23202_1_5"      "XP23202_1_6"     
## [157] "XP23202_1_7"      "XP23202_31"       "XP23202_32"      
## [160] "XP23202_33"       "XP23202_34"       "XP23202_35"      
## [163] "XP23202_36"       "XP23202_37"       "p23250_sn"       
## [166] "XP23251_1"        "XP23251_2"        "XP23251_3"       
## [169] "XP23251_4"        "XP23251_5"        "XP23251_6"       
## [172] "XP23252_11"       "XP23252_12"       "XP23252_13"      
## [175] "XP23252_14"       "XP23252_15"       "XP23252_16"      
## [178] "XP23252_17"       "XP23252_31"       "XP23252_32"      
## [181] "XP23252_33"       "XP23252_34"       "XP23252_35"      
## [184] "XP23252_36"       "p23300_sn"        "p24000_1_sn"     
## [187] "p24000_2_sn"      "p24000_3_sn"      "p24000_4_sn"     
## [190] "p24000_5_sn"      "p24000_13_sn"     "p26002_sn"       
## [193] "p26101_sn"        "p26102_sn"        "p26103_sn"       
## [196] "p27000_sn"        "p28100_sn"        "XP28100_1"       
## [199] "XP28100_2"        "XP28100_3"        "XP28100_4"       
## [202] "XP28100_5"        "XP28100_6"        "XP28100_7"       
## [205] "XP28100_9"        "p28200_sn"        "XP29000_1"       
## [208] "XP29000_2"        "XP29000_3"        "XP29000_4"       
## [211] "XP29000_5"        "XP29000_6"        "XP29000_9"       
## [214] "p29000_esp"       "p30000_sn"        "p30000_1"        
## [217] "SEMBRAMANUAL"     "PULVEMOCHILA"     "PULVEMOTO"       
## [220] "ARADOS"           "MOTOCULTOR"       "MOTOSIERRA"      
## [223] "CARRETA"          "PICADORA"         "TRACTOR"         
## [226] "SEMBRADIRECTA"    "PULVEARRASTRE"    "COSEAUTOMOTRIZ"  
## [229] "ACOPLADOS"        "CAMIONES"         "AERONAVES"       
## [232] "TRACTORGPS"       "SEMBRASENSOR"     "PULVECONTROL"    
## [235] "COSECHASENSOR"    "DRONES"
py <- st_read("G:/Mi unidad/FACEN_BIGDATA/CAN2022SanPedro/gadm40_PRY_2.shp")
## Reading layer `gadm40_PRY_2' from data source 
##   `G:\Mi unidad\FACEN_BIGDATA\CAN2022SanPedro\gadm40_PRY_2.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 218 features and 12 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -62.64652 ymin: -27.60586 xmax: -54.25863 ymax: -19.29137
## Geodetic CRS:  WGS 84
py$refer <- rnorm(218,0,1)

#View(py)

Filtrar solo el departamento de San Pedro

Identificador de la finca: ID_FCA_ALEATORIO Departamento: “DPTO_PROC”
Distrito: “DSTO_PROC”
Tipo de finca:“tipoi”

cbind(table(can$DPTO_PROC))
##     [,1]
## 1  12083
## 2  39480
## 3  15539
## 4  13044
## 5  30825
## 6  14065
## 7  24470
## 8   5696
## 9  13973
## 10 11725
## 11  2872
## 12  5618
## 13  2604
## 14 11570
## 15  3273
## 16  2029
## 17   968

Filtro de la base solo para San Pedro

cansp <- can %>%
filter(DPTO_PROC==7)

cbind(table(cansp$DPTO_PROC))
##    [,1]
## 7 24470

Etiquetar variables de interés

Etiquetar cada distrito

# Vector key → nombre de distrito para los 218 distritos (códigos DSTO_PROC)

# Crear vector etiquetado para distritos de Itapúa
itapua_labels <- c(
  `0701` = "Encarnación",
  `0702` = "Bella Vista",
  `0703` = "Cambyretá",
  `0704` = "Capitán Meza",
  `0705` = "Capitán Miranda",
  `0706` = "Nueva Alborada",
  `0707` = "Carmen del Paraná",
  `0708` = "Coronel Bogado",
  `0709` = "Carlos Antonio López",
  `0710` = "Natalio",
  `0711` = "Fram",
  `0712` = "General Artigas",
  `0713` = "General Delgado",
  `0714` = "Hohenau",
  `0715` = "Jesús",
  `0716` = "José Leandro Oviedo",
  `0717` = "Obligado",
  `0718` = "Mayor Julio Dionisio Otaño",
  `0719` = "San Cosme y Damián",
  `0720` = "San Pedro del Paraná",
  `0721` = "San Rafael del Paraná",
  `0722` = "Trinidad",
  `0723` = "Edelira",
  `0724` = "Tomás Romero Pereira",
  `0725` = "Alto Verá",
  `0726` = "La Paz",
  `0727` = "Yatytay",
  `0728` = "San Juan del Paraná",
  `0729` = "Pirapó"
)

# Ejemplo de uso creando un factor categórico a partir de los códigos (completo)
codigos_itapua <- c(
  "0701", "0702", "0703", "0704", "0705", "0706", "0707",
  "0708", "0709", "0710", "0711", "0712", "0713", "0714",
  "0715", "0716", "0717", "0718", "0719", "0720", "0721",
  "0722", "0723", "0724", "0725", "0726", "0727", "0728", "0729"
)

# Crear factor con nombres claros para distritos
distrito_nombre <- factor(
  codigos_itapua,
  levels = names(itapua_labels),
  labels = itapua_labels
)

# Verificar resultado
distrito_nombre
##  [1] Encarnación                Bella Vista               
##  [3] Cambyretá                  Capitán Meza              
##  [5] Capitán Miranda            Nueva Alborada            
##  [7] Carmen del Paraná          Coronel Bogado            
##  [9] Carlos Antonio López       Natalio                   
## [11] Fram                       General Artigas           
## [13] General Delgado            Hohenau                   
## [15] Jesús                      José Leandro Oviedo       
## [17] Obligado                   Mayor Julio Dionisio Otaño
## [19] San Cosme y Damián         San Pedro del Paraná      
## [21] San Rafael del Paraná      Trinidad                  
## [23] Edelira                    Tomás Romero Pereira      
## [25] Alto Verá                  La Paz                    
## [27] Yatytay                    San Juan del Paraná       
## [29] Pirapó                    
## 29 Levels: Encarnación Bella Vista Cambyretá Capitán Meza ... Pirapó
# 5. Asignar etiqueta a cada fila según DSTO_PROC
cansp <- cansp %>%
  mutate(
    DSTO_PROC = sprintf("%04d", DSTO_PROC),  # asegurarse que tenga formato correcto ("0701", etc.)
    distrito_nombre = recode(DSTO_PROC, !!!itapua_labels)
  )
t=cbind(table(cansp$distrito_nombre))
t
##                            [,1]
## 0730                        956
## Alto Verá                  1164
## Bella Vista                 802
## Cambyretá                   765
## Capitán Meza                960
## Capitán Miranda             666
## Carlos Antonio López       1439
## Carmen del Paraná           392
## Coronel Bogado              746
## Edelira                    1562
## Encarnación                 436
## Fram                        503
## General Artigas            1055
## General Delgado             799
## Hohenau                     339
## Jesús                       188
## José Leandro Oviedo         456
## La Paz                      161
## Mayor Julio Dionisio Otaño  822
## Natalio                    1355
## Nueva Alborada              486
## Obligado                    844
## Pirapó                      481
## San Cosme y Damián          600
## San Juan del Paraná          93
## San Pedro del Paraná       1947
## San Rafael del Paraná      1488
## Tomás Romero Pereira       1880
## Trinidad                    248
## Yatytay                     837

Etiquetar tipofinca

Cuantas fincas hay en San Pedro?

tabla1=sort(table(cansp$distrito_nombre), decreasing=FALSE)
tabla1
## 
##        San Juan del Paraná                     La Paz 
##                         93                        161 
##                      Jesús                   Trinidad 
##                        188                        248 
##                    Hohenau          Carmen del Paraná 
##                        339                        392 
##                Encarnación        José Leandro Oviedo 
##                        436                        456 
##                     Pirapó             Nueva Alborada 
##                        481                        486 
##                       Fram         San Cosme y Damián 
##                        503                        600 
##            Capitán Miranda             Coronel Bogado 
##                        666                        746 
##                  Cambyretá            General Delgado 
##                        765                        799 
##                Bella Vista Mayor Julio Dionisio Otaño 
##                        802                        822 
##                    Yatytay                   Obligado 
##                        837                        844 
##                       0730               Capitán Meza 
##                        956                        960 
##            General Artigas                  Alto Verá 
##                       1055                       1164 
##                    Natalio       Carlos Antonio López 
##                       1355                       1439 
##      San Rafael del Paraná                    Edelira 
##                       1488                       1562 
##       Tomás Romero Pereira       San Pedro del Paraná 
##                       1880                       1947
# Ajusta margen izquierdo para etiquetas largas
par(mar = c(5, 10, 4, 2))      # c(bottom, left, top, right)

barplot(tabla1,
        horiz = TRUE,          # barras horizontales
        las   = 1,             # etiquetas de eje y en horizontal
        col   = "steelblue",   # color de las barras
        xlab  = "Número de fincas",
        main  = "Fincas por distrito (orden descendente)")

### Clasificación de la finca

# Vector key → nombre de distrito para los 218 distritos (códigos DSTO_PROC)


clasifica_labels <- c(
  # ── San Pedro (20x) ───────────────────────────────────
  `11` = "Finca agropecuaria no indígena",
  `12` = "Productor con más de una finca",
  `13` = "Finca agropecuaria indígena"

  
)


# 5. Asignar etiqueta a cada fila según DSTO_PROC
cansp <- cansp %>%
  mutate(
    CLASIFICANEW = as.integer(CLASIFICANEW),  # asegurarse de tipo entero
    clasefinca= recode(CLASIFICANEW, !!!clasifica_labels)
  )

cbind(table(cansp$clasefinca))
##                                 [,1]
## Finca agropecuaria indígena        1
## Finca agropecuaria no indígena 24327
## Productor con más de una finca   142
library(dplyr)
library(ggplot2)

cansp %>% 
  count(clasefinca, name = "n") %>% 
  mutate(pct = n / sum(n) * 100) %>% 
  ggplot(aes(x = "", y = n, fill = clasefinca)) +
  geom_col(width = 1, color = "white") +
  coord_polar("y", start = 0) +            # transforma a “pastel”
  geom_text(aes(label = paste0(round(pct, 1), "%")),
            position = position_stack(vjust = 0.5), size = 3) +
  labs(title = "Distribución de fincas por clase",
       fill  = "Clase de finca") +
  theme_void() +
  theme(legend.position = "top")

Comentario: Al menos un buen párrafo

Manejo de las fincas (propietario)

1.¿La finca es manejada por un solo productor/a? 2.¿o es manejada por dos o más productores asociados de hecho (como socio)? 3. Otros (Empresa, Estado, Comunidad Religiosa, Cooperativa, etc.)

tipofinca_labels <- c(
  # ── San Pedro (20x) ───────────────────────────────────
  `1` = "Manejada por un solo productor/a",
  `2` = "manejada por dos o más productores asociados",
  `3` = "Otros (Empresa, Estado, Comunidad Religiosa...)"
)


# 5. Asignar etiqueta a cada fila según DSTO_PROC
cansp <- cansp %>%
  mutate(
    tipofinca = as.integer(tipofinca),  # asegurarse de tipo entero
    tipodefinca= recode(tipofinca, !!!tipofinca_labels)
  )
# Ajusta margen izquierdo para etiquetas largas
par(mar = c(5, 10, 4, 2))      # c(bottom, left, top, right)

barplot(tabla1,
        horiz = TRUE,          # barras horizontales
        las   = 1,             # etiquetas de eje y en horizontal
        col   = "steelblue",   # color de las barras
        xlab  = "Número de fincas",
        main  = "Fincas por distrito (orden descendente)")

3000 MANEJO DE LA FINCA

cbind(table(cansp$tipofinca))
##    [,1]
## 1 23094
## 2  1110
## 3   266
# Vector key → nombre de distrito para los 218 distritos (códigos DSTO_PROC)


tipofinca_labels <- c(
  # ── San Pedro (20x) ───────────────────────────────────
  `1` = "Manejada por un solo productor/a",
  `2` = "manejada por dos o más productores asociados",
  `3` = "Otros (Empresa, Estado, Comunidad Religiosa...)"

  
)


# 5. Asignar etiqueta a cada fila según DSTO_PROC
cansp <- cansp %>%
  mutate(
    tipofinca = as.integer(tipofinca),  # asegurarse de tipo entero
    tipodefinca= recode(tipofinca, !!!tipofinca_labels)
  )

cbind(table(cansp$tipodefinca))
##                                                  [,1]
## manejada por dos o más productores asociados     1110
## Manejada por un solo productor/a                23094
## Otros (Empresa, Estado, Comunidad Religiosa...)   266

Clasficación de las fincas

11.Finca agropecuaria no indígena 12.Productor con más de una finca 13.Finca agropecuaria indígena

cbind(table(cansp$CLASIFICANEW))
##     [,1]
## 11 24327
## 12   142
## 13     1
# Vector key → nombre de distrito para los 218 distritos (códigos DSTO_PROC)


clasifica_labels <- c(
  # ── San Pedro (20x) ───────────────────────────────────
  `11` = "Finca agropecuaria no indígena",
  `12` = "Productor con más de una finca",
  `13` = "Finca agropecuaria indígena"

  
)


# 5. Asignar etiqueta a cada fila según DSTO_PROC
cansp <- cansp %>%
  mutate(
    CLASIFICANEW = as.integer(CLASIFICANEW),  # asegurarse de tipo entero
    clasefinca= recode(CLASIFICANEW, !!!clasifica_labels)
  )

cbind(table(cansp$clasefinca))
##                                 [,1]
## Finca agropecuaria indígena        1
## Finca agropecuaria no indígena 24327
## Productor con más de una finca   142

Nacionalidad del productor

p5000 ¿Qué nacionalidad tiene (el productor/a)?

cbind(table(cansp$p5000))
##    [,1]
## 1 22176
## 2   918
# Vector key → nombre de distrito para los 218 distritos (códigos DSTO_PROC)


nacionalidad_labels <- c(
  # ── San Pedro (20x) ───────────────────────────────────
  `1` = "Paraguaya",
  `2` = "Otros"
  
)


# 5. Asignar etiqueta a cada fila según DSTO_PROC
cansp <- cansp %>%
  mutate(
    p5000 = as.integer(p5000),  # asegurarse de tipo entero
    nacionalidadprod= recode(p5000, !!!nacionalidad_labels)
  )

cbind(table(cansp$nacionalidadprod))
##            [,1]
## Otros       918
## Paraguaya 22176

Resultados

Quiénes viven en las fincas

Tipo de finca

Clasficación de las fincas

11.Finca agropecuaria no indígena 12.Productor con más de una finca 13.Finca agropecuaria indígena

# tabla de suma total de tamaño de tierra por finca , por tipo de manjo


library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.3.3
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(dplyr)
library(scales)   # solo si quieres formatear el porcentaje
## Warning: package 'scales' was built under R version 4.3.3
## 
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
## 
##     discard
## The following object is masked from 'package:readr':
## 
##     col_factor
tabla_clasificafinca <- cansp %>% 
  filter(!is.na(clasefinca)) %>%          # quita NAs
  group_by(clasefinca) %>% 
  summarise(
    n_fincas   = n(),                           # recuento
    total_ha   = sum(p8000_1,  na.rm = TRUE),   # superficie total (ha)
    media_ha   = mean(p8000_1, na.rm = TRUE),   # promedio (ha)
    mediana_ha = median(p8000_1, na.rm = TRUE),
    .groups = "drop"
  ) %>% 
  mutate(
    pct_fincas = n_fincas / sum(n_fincas) * 100,         # porcentaje
    pct_label  = percent(pct_fincas / 100, accuracy = .1)  # "xx.x%"
  ) %>% 
  arrange(desc(total_ha))

tabla_clasificafinca
## # A tibble: 3 × 7
##   clasefinca          n_fincas total_ha media_ha mediana_ha pct_fincas pct_label
##   <chr>                  <int>    <dbl>    <dbl>      <dbl>      <dbl> <chr>    
## 1 Finca agropecuaria…    24327 932282.      38.3        6.5   99.4     99.4%    
## 2 Productor con más …      142  11270.      79.4       20.5    0.580   0.6%     
## 3 Finca agropecuaria…        1      6.6      6.6        6.6    0.00409 0.0%

Nacionalidad de los productores

5000 ¿Qué nacionalidad tiene (el productor/a)? p5000 1 1.Paraguaya 2 2. Otros

1.Paraguaya 2. Otros

Edades

Sexo

Distribución de la tierra

Quien manejan las fincas

  1. TOTAL SUPERFICIE - USO DE LA TIERRA- (debe ser igual a la superficie total de la Tenencia de la tierra)
summary(cansp$p10000_total)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##     0.01     2.60     6.90    38.56    16.00 16000.00

Cómo se distribuyen la tierra entre los que manejan las fincas

# tabla de suma total de tamaño de tierra por finca , por tipo de manjo

library(dplyr)

tabla1 <- cansp %>%                       # usa tu data.frame CAN
  filter(!is.na(tipodefinca)) %>%   # opcional: quita NAs en la categoría
  group_by(tipodefinca) %>%         # agrupa por tipo de manejo
  summarise(
    n_fincas     = n(),                         # cantidad de fincas
    total_ha     = sum(p8000_1,  na.rm = TRUE), # superficie total (ha)
    media_ha     = mean(p8000_1, na.rm = TRUE), # superficie promedio (ha)
    mediana_ha   = median(p8000_1, na.rm = TRUE)
  ) %>% 
  arrange(desc(total_ha))              # ordena de mayor a menor superficie

tabla1
## # A tibble: 3 × 5
##   tipodefinca                              n_fincas total_ha media_ha mediana_ha
##   <chr>                                       <int>    <dbl>    <dbl>      <dbl>
## 1 Manejada por un solo productor/a            23094  740014.     32.0       6   
## 2 Otros (Empresa, Estado, Comunidad Relig…      266  152095.    572.       62   
## 3 manejada por dos o más productores asoc…     1110   51450.     46.4       9.25

Calcular el tamaño medio de las fincas por cada distrito

library(dplyr)

tamaño_medio_distrito <- cansp %>%          # usa tu data.frame con micro-datos
  group_by(distrito_nombre) %>% # un distrito = una fila
  summarise(
    n_fincas     = n(),                           # cuántas fincas en el distrito
    mean_superf  = mean(p8000_1, na.rm = TRUE)    # tamaño medio de finca (ha)
  ) %>%
  ungroup() %>%
  arrange(desc(mean_superf))            # ordena de mayor a menor, opcional

tamaño_medio_distrito
## # A tibble: 30 × 3
##    distrito_nombre       n_fincas mean_superf
##    <chr>                    <int>       <dbl>
##  1 Carmen del Paraná          392       201. 
##  2 Pirapó                     481       116. 
##  3 La Paz                     161        95.6
##  4 General Artigas           1055        82.6
##  5 San Cosme y Damián         600        77.1
##  6 Jesús                      188        56.5
##  7 Carlos Antonio López      1439        51.3
##  8 Trinidad                   248        46.8
##  9 San Rafael del Paraná     1488        46.6
## 10 Hohenau                    339        45.9
## # ℹ 20 more rows
# Instalar ggrepel solo la primera vez
if (!requireNamespace("ggrepel", quietly = TRUE)) {
  install.packages("ggrepel")
}
library(ggplot2)
library(ggrepel)
library(scales)

ggplot(tamaño_medio_distrito,
       aes(x = n_fincas,
           y = mean_superf,
           size = mean_superf)) +        # tamaño proporcional
  geom_point(color = "steelblue", alpha = .7) +
  # ── Etiquetas que no se superpongan ──────────────────────────
  geom_text_repel(aes(label = distrito_nombre),
                  size = 3,
                  max.overlaps = 50,
                  box.padding   = .25,
                  point.padding = .2,
                  segment.color = "grey70") +
  # Escalas y formato ------------------------------------------
  scale_size_area(max_size = 12, guide = "none") +    # controla diámetro máximo
  scale_x_continuous(labels = comma) +
  scale_y_continuous(labels = comma) +
  labs(
    title   = "Nº de fincas vs. tamaño medio por distrito",
    subtitle = "Área del punto ∝ tamaño medio de finca (ha)",
    x       = "Cantidad de fincas censadas (n)",
    y       = "Tamaño medio de finca (ha)",
    caption = "Fuente: Censo Agropecuario Nacional 2022"
  ) +
  theme_minimal(base_size = 12)

Interpretación:

Relación inversa casi sistemática: más fincas → fincas más pequeñas.

Implica que el mercado o la asignación histórica de tierras produjo un patrón de concentración donde la expansión de grandes establecimientos se asocia a baja densidad de productores.

Dominio de la tierra en manos de relativamente pocos en ciertos distritos (outliers de gran tamaño medio). Ej.: Tacuatí sobresale tanto en diámetro del punto como en altura (≈ 80 ha) con apenas ~2 000 fincas.

Zonas de minifundio: la mayor parte de la población rural se concentra en distritos donde el promedio no supera 20 ha; allí los desafíos giran en torno a la seguridad alimentaria y la intensificación sostenible más que a la expansión de la frontera.

En suma, el dispersograma visualiza de un vistazo la dualidad agraria en San Pedro: grandes extensiones con baja densidad vs. mosaicos de pequeñas fincas.

Producción

Rendimiento de algunos rubros

names(py)
##  [1] "ID_0"      "COUNTRY"   "NAME_1"    "NL_NAME_1" "ID_2"      "NAME_2"   
##  [7] "VARNAME_2" "NL_NAME_2" "TYPE_2"    "ENGTYPE_2" "CC_2"      "HASC_2"   
## [13] "geometry"  "refer"
# 1. Librerías (dplyr debe cargarse después de paquetes que exporten select S4)
library(sf)
library(stringr)
library(dplyr)


# 3. Extraer dstocode de GID_2 (o ID_2 según tu shapefile)
py <- py %>%
  mutate(
    raw_id2 = as.character(ID_2),           # o ID_2 si así se llama
    dstocode = raw_id2 %>%
      str_remove("^PRY\\.") %>%               # quita "PRY."
      str_remove("_.*$") %>%                  # quita el "_" y lo que sigue
      str_replace_all("\\.", "") %>%          # elimina cualquier punto
      as.integer()                            # convierte a integer (ej. 1613)
  )

# 4. Preparar tu df 'can' para el join
cansp <- cansp %>%
  mutate(dstocode = as.integer(DSTO_PROC))

# 5. Hacer el join usando dplyr::select() para evitar conflictos
canspgeo <- cansp %>%
  left_join(
    py %>%
      sf::st_drop_geometry() %>%
      dplyr::select(dstocode, NAME_1, NAME_2),
    by = "dstocode"
  ) %>%
  dplyr::rename(
    departamento = NAME_1,
    distrito     = NAME_2
  )


# 7. Vista rápida del resultado
head(canspgeo)
## # A tibble: 6 × 243
##   ID_FCA_ALEATORIO CLASIFICANEW DPTO_PROC DSTO_PROC tipoi tipofinca p5000
##              <dbl>        <int>     <dbl> <chr>     <dbl>     <int> <int>
## 1                3           11         7 0723         NA         1     1
## 2               15           11         7 0719         NA         2    NA
## 3               27           11         7 0721         NA         1     1
## 4               33           11         7 0718         NA         1     1
## 5               68           11         7 0713         NA         1     1
## 6              108           11         7 0704         NA         1     1
## # ℹ 236 more variables: menores_total <dbl>, mayores_total <dbl>,
## #   p7001_sn <dbl>, p7021p <dbl>, p7021p_nosabe <dbl>, p7033p <dbl>,
## #   p7033p_nosabe <dbl>, p7221t <dbl>, p7221t_nosabe <dbl>, p7223t <dbl>,
## #   p7223t_nosabe <dbl>, p8000_1 <dbl>, p8000_3 <dbl>, p9001 <dbl>,
## #   p9000_total <dbl>, p10001 <dbl>, p10002 <dbl>, p10003 <dbl>, p10004 <dbl>,
## #   p10005 <dbl>, p10006 <dbl>, p10007 <dbl>, p10008 <dbl>, p10009 <dbl>,
## #   p10000_total <dbl>, p12000_sn <dbl>, p12000_total <dbl>, …
names(canspgeo)
##   [1] "ID_FCA_ALEATORIO" "CLASIFICANEW"     "DPTO_PROC"       
##   [4] "DSTO_PROC"        "tipoi"            "tipofinca"       
##   [7] "p5000"            "menores_total"    "mayores_total"   
##  [10] "p7001_sn"         "p7021p"           "p7021p_nosabe"   
##  [13] "p7033p"           "p7033p_nosabe"    "p7221t"          
##  [16] "p7221t_nosabe"    "p7223t"           "p7223t_nosabe"   
##  [19] "p8000_1"          "p8000_3"          "p9001"           
##  [22] "p9000_total"      "p10001"           "p10002"          
##  [25] "p10003"           "p10004"           "p10005"          
##  [28] "p10006"           "p10007"           "p10008"          
##  [31] "p10009"           "p10000_total"     "p12000_sn"       
##  [34] "p12000_total"     "p12000b_total"    "p13300_total"    
##  [37] "p14000_sn"        "p14000_total"     "p15000_sn"       
##  [40] "p15000_total"     "p16000_sn"        "p16000_total"    
##  [43] "p18000_sn"        "p18002"           "XP18003_1"       
##  [46] "XP18003_2"        "XP18003_3"        "p18003_esp"      
##  [49] "p18003_0"         "p18003_1"         "p18003_2"        
##  [52] "p18003_3"         "p19100_sn"        "p19101"          
##  [55] "p19102"           "p19103"           "p19104"          
##  [58] "p19105"           "p19106"           "p19107"          
##  [61] "p19108"           "p19109"           "p19110"          
##  [64] "p19111"           "p19112"           "p19119"          
##  [67] "p19121"           "p19122"           "p19123"          
##  [70] "p19123_nosabe"    "xp19124_1"        "xp19124_2"       
##  [73] "xp19124_3"        "xp19124_4"        "p19125_1"        
##  [76] "p19131"           "p19132"           "p19133"          
##  [79] "p19135_1_sn"      "p19136_sn"        "p19139_sn"       
##  [82] "p19140_sn"        "p19300_sn"        "p19303_total"    
##  [85] "raza_oveja_total" "p19400_sn"        "p19405_total"    
##  [88] "raza_cabra_total" "p19500_sn"        "p19509_total"    
##  [91] "p19700_sn"        "p19701"           "p19710"          
##  [94] "p19800_sn"        "p19802"           "p19802_nosabe"   
##  [97] "p210051_sn"       "p21010_sn"        "p21011_sn"       
## [100] "p21013_sn"        "p21014_sn"        "p21016_sn"       
## [103] "p21017_sn"        "p21018_sn"        "p21018_1"        
## [106] "XP21018_2_1"      "XP21018_2_2"      "XP21018_2_3"     
## [109] "XP21018_2_4"      "p22000_sn"        "p23100_sn"       
## [112] "XP23101_1"        "XP23101_2"        "XP23101_3"       
## [115] "XP23101_4"        "XP23101_5"        "XP23101_6"       
## [118] "XP23101_7"        "XP23102_1_1"      "XP23102_1_2"     
## [121] "XP23102_1_3"      "XP23102_1_4"      "XP23102_1_5"     
## [124] "XP23102_1_6"      "XP23102_1_7"      "XP23102_1_8"     
## [127] "XP23102_1_9"      "XP23102_1_10"     "XP23102_1_11"    
## [130] "XP23102_1_12"     "XP23102_3_1"      "XP23102_3_2"     
## [133] "XP23102_3_3"      "XP23102_3_4"      "XP23102_3_5"     
## [136] "XP23102_3_6"      "XP23102_3_7"      "XP23102_3_8"     
## [139] "XP23102_3_9"      "XP23102_3_10"     "XP23102_3_11"    
## [142] "XP23102_3_12"     "p23150_sn"        "p23200_sn"       
## [145] "XP23201_1"        "XP23201_2"        "XP23201_3"       
## [148] "XP23201_4"        "XP23201_5"        "XP23201_6"       
## [151] "XP23202_1_1"      "XP23202_1_2"      "XP23202_1_3"     
## [154] "XP23202_1_4"      "XP23202_1_5"      "XP23202_1_6"     
## [157] "XP23202_1_7"      "XP23202_31"       "XP23202_32"      
## [160] "XP23202_33"       "XP23202_34"       "XP23202_35"      
## [163] "XP23202_36"       "XP23202_37"       "p23250_sn"       
## [166] "XP23251_1"        "XP23251_2"        "XP23251_3"       
## [169] "XP23251_4"        "XP23251_5"        "XP23251_6"       
## [172] "XP23252_11"       "XP23252_12"       "XP23252_13"      
## [175] "XP23252_14"       "XP23252_15"       "XP23252_16"      
## [178] "XP23252_17"       "XP23252_31"       "XP23252_32"      
## [181] "XP23252_33"       "XP23252_34"       "XP23252_35"      
## [184] "XP23252_36"       "p23300_sn"        "p24000_1_sn"     
## [187] "p24000_2_sn"      "p24000_3_sn"      "p24000_4_sn"     
## [190] "p24000_5_sn"      "p24000_13_sn"     "p26002_sn"       
## [193] "p26101_sn"        "p26102_sn"        "p26103_sn"       
## [196] "p27000_sn"        "p28100_sn"        "XP28100_1"       
## [199] "XP28100_2"        "XP28100_3"        "XP28100_4"       
## [202] "XP28100_5"        "XP28100_6"        "XP28100_7"       
## [205] "XP28100_9"        "p28200_sn"        "XP29000_1"       
## [208] "XP29000_2"        "XP29000_3"        "XP29000_4"       
## [211] "XP29000_5"        "XP29000_6"        "XP29000_9"       
## [214] "p29000_esp"       "p30000_sn"        "p30000_1"        
## [217] "SEMBRAMANUAL"     "PULVEMOCHILA"     "PULVEMOTO"       
## [220] "ARADOS"           "MOTOCULTOR"       "MOTOSIERRA"      
## [223] "CARRETA"          "PICADORA"         "TRACTOR"         
## [226] "SEMBRADIRECTA"    "PULVEARRASTRE"    "COSEAUTOMOTRIZ"  
## [229] "ACOPLADOS"        "CAMIONES"         "AERONAVES"       
## [232] "TRACTORGPS"       "SEMBRASENSOR"     "PULVECONTROL"    
## [235] "COSECHASENSOR"    "DRONES"           "distrito_nombre" 
## [238] "clasefinca"       "tipodefinca"      "nacionalidadprod"
## [241] "dstocode"         "departamento"     "distrito"

Estadísticas descriptivas de algunos rubros

Tipo de finca

tipofinca

1.¿La finca es manejada por un solo productor/a? 2.¿o es manejada por dos o más productores asociados de hecho (como socio)? 3. Otros (Empresa, Estado, Comunidad Religiosa, Cooperativa, etc.)

Superficie de tierra que maneja en hectáreas

8000_1 ¿Qué superficie de la tierra MANEJA en total (INCLUIR todas las superficies de las PARCELAS SEPARADAS, pero SIN INCLUIR aquella tierra que alquila a otra persona)? p8000_1

montes naturales en hectáreas

10000_4 ¿Qué superficie de tierra tiene con montes naturales?____ha

Proporción de bosques naturales por distrito en San Pedro, respecto a la superficie total manejadas

Mapa de calor del porcentaje promedio de bosques naturales en las fincas rurales de los distritos de San Pedro

Filtrar el mapa solo para San Pedro

# 
# # 1. Cargar librerías
# library(dplyr)
# library(stringi)
# 
# # 2. Calcular la proporción media de bosque NATURAL por distrito (Sólo San Pedro)
# bosques_distrito <- canspgeo %>%                     # data.frame sf con fincas
#   mutate(                                            # normalizar nombre
#     distrito_norm = distrito_nombre %>% 
#       stri_trans_general("Latin-ASCII") %>% 
#       toupper()
#   ) %>% 
#   group_by(distrito_norm) %>%                        # agrupar por distrito
#   summarise(
#     mean_porcbosques = mean(porcbosquesnat, na.rm = TRUE),
#     n_fincas         = n(),                          # opcional
#     .groups = "drop"
#   ) %>% 
#   arrange(desc(mean_porcbosques))                    # ordenar de mayor a menor
# 
# bosques_distrito
# # 3. Normalizar nombres en el objeto espacial San Pedro
# py <- py %>%
#   mutate(
#     join_name = NAME_2 %>%
#       stringi::stri_trans_general("Latin-ASCII") %>%
#       toupper() %>%
#       str_squish()
#   )
# 
# # 4. Hacer el join sobre la columna normalizada
# py <- py %>%
#   left_join(bosques_distrito,
#             by = c("NAME_2" = "distrito_norm"))