Este manual de procedimientos ha sido elaborado con el propósito de servir como guía en la implementación de los procesos de minería de datos necesarios para la gestión de los registros administrativos relacionados con las micro, pequeñas y medianas empresas. Su objetivo es facilitar futuras ediciones del estudio, presentando paso a paso cada procedimiento necesario basado en códigos desarrollados en el lenguaje R, con el fin de hacer su replicación sencilla.
El software R se ha consolidado como una de las mejores opciones disponibles para la minería de datos y la ciencia de datos, especialmente por ser de código abierto (Open Source). Además, es ampliamente utilizado por una comunidad científica respaldada por una multitud de recursos en línea que facilitan su uso y comprensión.
Este manual representa el primer paso hacia la explotación de los registros administrativos para la generación de información respaldada técnicamente y científicamente. Su objetivo principal es proporcionar herramientas para la toma de decisiones basada en datos.
Es importante destacar que todas las tablas estadísticas y figuras presentadas en este informe son responsabilidad exclusiva del autor y no representan necesariamente el pensamiento de la institución ni el de sus autoridades.
La base de datos contiene información detallada sobre empresas y contribuyentes, proporcionando un panorama completo de su estructura y actividad económica. A continuación, se presenta una breve descripción de los principales campos contenidos en la base de datos:
Ruc: Abreviatura de “Registro Único de Contribuyente”. Es un código único asignado a cada empresa o persona que realiza actividades económicas sujetas a impuestos.
Dv: Dígito verificador asociado al RUC. Es un mecanismo de control que permite validar que el número de RUC es correcto y corresponde a la entidad registrada.
Cod..Actividad.Economica.Princ: Código de la actividad económica principal. Este campo indica la clasificación de la actividad principal que desarrolla la empresa o el contribuyente, siguiendo una codificación estándar que facilita el análisis sectorial o económico.
Fecha.Constitucion: Fecha en la que se constituyó legalmente la empresa o se registró el contribuyente.
Tipo.Sociedad: Describe el tipo legal de sociedad o forma jurídica bajo la cual opera la entidad. Ejemplos pueden incluir sociedad anónima, sociedad de responsabilidad limitada, etc.
Tipo.Contribuyente: Indica la clasificación del contribuyente según criterios fiscales o legales, lo cual puede influir en sus obligaciones tributarias y los beneficios a los que puede acceder.
DPTO: Departamento o región en la que se encuentra registrada o localizada la empresa o contribuyente.
DISTRITO: Distrito o área más específica dentro del departamento donde se encuentra la empresa.
Estado: Estado actual del contribuyente o de la empresa dentro del registro. Puede indicar si está activo, inactivo, en liquidación, etc.
Impuesto: Indica el tipo de impuesto o impuestos que la entidad está obligada a pagar. CATEGORÍA: Categoría del contribuyente o de la empresa, que puede estar relacionada con su tamaño (por ejemplo, micro, pequeña, mediana, grande)
En el capítulo de Gestión de Datos se detalla el proceso desde la instalación de librerías en R hasta la aplicación de filtros para análisis específicos. Se organiza la carga y guardado de datos, se renombran variables, se eliminan duplicados, y se aplican filtros por estado, tipo de persona jurídica, actividad económica principal y categoría de empresa. Esto asegura la integridad y preparación adecuada de los datos para su posterior análisis en el estudio de minería de datos.
rm(list = ls())
#install.packages("textstem")
#install.packages("dplyr")
#install.packages("tidyr")
#install.packages("readxl")
#install.packages("koRpus")
#install.packages("tm")
#install.packages("styler")
#install.packages("readr")
library("dplyr")
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
library(readxl)
library(koRpus)
## Warning: package 'koRpus' was built under R version 4.3.3
## Loading required package: sylly
## Warning: package 'sylly' was built under R version 4.3.3
## For information on available language packages for 'koRpus', run
##
## available.koRpus.lang()
##
## and see ?install.koRpus.lang()
library(tm)
## Warning: package 'tm' was built under R version 4.3.3
## Loading required package: NLP
##
## Attaching package: 'tm'
## The following object is masked from 'package:koRpus':
##
## readTagged
library(readr)
##
## Attaching package: 'readr'
## The following object is masked from 'package:koRpus':
##
## tokenize
library(openxlsx)
## Warning: package 'openxlsx' was built under R version 4.3.3
# ##########################################################
# # PREPARAR EL EXCEL PARA GUARDAR LOS RESULTADOS
# # Carga el paquete
# #install.packages("openxlsx")
# library(openxlsx)
#
# # Crear un nuevo libro de trabajo (archivo Excel)
wb <- createWorkbook()
#
# # Nombres de las hojas
hojas <- c(paste0("Tabla", 1:8), paste0("Figura", 1:15))
#
# # Añadir hojas al libro de trabajo
for (hoja in hojas) {
addWorksheet(wb, hoja)
}
##########################################################
Solicitud de base de datos a la DNIT
Solicitud conjunta (entre el viceministerio de MIPYMES y el INE) a la DNIT de la base de datos de contribuyentes de IRE al corte del año fiscal de referencia Primer análisis de la consistencia de la base Solicitud de correcciones y/o aclaraciones y recepción de estas Solicitud de datos a la Dirección de Aporte Obrero Patronal y al MTESS sobre la base completa.
Se dispone archivo excel para remitir adjunto a la solicitud
Tabla
Los campos IPS y MTESS son completados remitiendo la base de datos a los responsable de cada institución, como respuesta la DAOP deberá completar 3 campos: IPS (Si: cuenta con registro activo en el IPS, No: no cuenta con registro activo en el IPS) y los campos T_hombres: Total hombres y T_mujeres: total mujeres
El primer paso se trata de los codigos para para cargar y guardar
datos desde un archivo Excel a un formato comprimido de datos
(RDS) para su posterior uso eficiente. El procedimiento
consta de los siguientes pasos:
suppressWarnings({
library(readxl)
datos <- read_excel("G:/Mi unidad/Mipymes/BASE_DNIT_2022.xlsx", col_types = rep("text", 15))
})
names(datos)
## [1] "Ruc" "Dv"
## [3] "Cod Act Economica Princ" "Fecha Constitucion_anio"
## [5] "Tipo Sociedad" "Tipo Contribuyente"
## [7] "DPTO" "DISTRITO"
## [9] "Estado" "Impuesto"
## [11] "CATEGORÍA" "MTESS"
## [13] "IPS" "T_hombres"
## [15] "T_mujeres"
str(datos)
## tibble [996,629 × 15] (S3: tbl_df/tbl/data.frame)
## $ Ruc : chr [1:996629] "742789" "869846" "3892223" "4604816" ...
## $ Dv : chr [1:996629] "1" "5" "1" "2" ...
## $ Cod Act Economica Princ: chr [1:996629] "13000" "13000" "13000" "13000" ...
## $ Fecha Constitucion_anio: chr [1:996629] NA NA NA NA ...
## $ Tipo Sociedad : chr [1:996629] NA NA NA NA ...
## $ Tipo Contribuyente : chr [1:996629] "FISICO" "FISICO" "FISICO" "FISICO" ...
## $ DPTO : chr [1:996629] "CAPITAL" "ITAPUA" "ALTO PARANA" "ITAPUA" ...
## $ DISTRITO : chr [1:996629] "ASUNCION (DISTRITO)" "HOHENAU" "SANTA RITA" "PIRAPO" ...
## $ Estado : chr [1:996629] "ACTIVO" "ACTIVO" "ACTIVO" "ACTIVO" ...
## $ Impuesto : chr [1:996629] "IRE SIMPLE" "IRE SIMPLE" "IRE SIMPLE" "IRE SIMPLE" ...
## $ CATEGORÍA : chr [1:996629] "Micro" "Micro" "Micro" "Pequeña" ...
## $ MTESS : chr [1:996629] "NO" "NO" "NO" "NO" ...
## $ IPS : chr [1:996629] "NO" "NO" "NO" "NO" ...
## $ T_hombres : chr [1:996629] "0" "0" "0" "0" ...
## $ T_mujeres : chr [1:996629] "0" "0" "0" "0" ...
nrow(datos)
## [1] 996629
Nota: use la opcion disponible en la pestaña Code, luego “Comment/Uncoment lines” para comentar o descomentar lineas en caso de necesidad
Lectura de Datos desde el Archivo Excel: Se
utiliza la función read_excel() del paquete
readxl para leer los datos del archivo Excel especificado.
Los datos se cargan en un formato tabular en R.
Transformación de Formato (Opcional): Si es necesario, se pueden realizar transformaciones de formato en los datos, como cambiar tipos de datos, renombrar columnas, eliminar columnas no deseadas, entre otros.
Guardado en Formato RDS: Una vez que los datos
están en el formato deseado, se utilizan las funciones
saveRDS() para guardar los datos en un archivo comprimido
de datos (RDS). Este archivo contiene una representación
binaria de los objetos R que pueden ser cargados rápidamente en futuras
sesiones de R.
Este proceso de carga y guardado de datos en formato RDS permite una eficiente gestión de los datos, reduciendo los tiempos de carga y optimizando el uso de recursos en el análisis posterior.
datos <- datos %>%
rename(
RUC = Ruc,
DV = Dv,
CodigoActividadEconomica = `Cod Act Economica Princ`,
Fechaconstitucionanio= `Fecha Constitucion_anio`,
TipoSociedad = `Tipo Sociedad`,
TipoContribuyente = `Tipo Contribuyente`,
Departamento = DPTO,
Distrito = DISTRITO,
Estado = Estado,
Impuesto = Impuesto,
Categoria = CATEGORÍA
)
#View(datos)
# Suponiendo que tu dataframe se llama 'datos'
datos <- datos %>%
mutate(Estado_recode = case_when(
Estado == "ACTIVO" ~ "Activo",
Estado == "BLOQUEADO" ~ "Bloqueado",
Estado == "CANCELADO" ~ "Cancelado",
Estado == "CANCELADO DEFINITIVO" ~ "Cancelado",
Estado == "SUSPENSION TEMPORAL" ~ "Suspension Temporal",
TRUE ~ as.character(Estado) # Conserva el valor original para cualquier otro caso
))
#DESDUPLICADO
# Eliminar duplicados basados en la columna Ruc, manteniendo el primer registro
datos2 <- distinct(datos , RUC, .keep_all = TRUE)
# Contar el número de casos únicos basados en la columna Ruc
total_casos_unicos <- nrow(distinct(datos2, RUC))
total_casos_unicos
## [1] 989407
Verificar si el campo CodigoActividadEconomica tiene valores perdidos
## "Cod.Act.Economica.Princ"
str(datos2$CodigoActividadEconomica)
## chr [1:989407] "13000" "13000" "13000" "13000" "154100" "179999" "182004" ...
# Contar la cantidad de valores NA en el campo Ruc
cantidad_na <- sum(is.na(datos2$CodigoActividadEconomica))
cantidad_na
## [1] 10
########### TABLA 1 ###################
tabla1=table(datos2$Estado_recode, datos2$Impuesto)
# Agregar los totales a la tabla
tabla1 <- addmargins(tabla1, margin = 1:2)
tabla1
##
## IRE GENERAL IRE RESIMPLE IRE SIMPLE Sum
## Activo 117255 13196 278602 409053
## Bloqueado 14636 298 6929 21863
## Cancelado 2463 357721 13953 374137
## Suspension Temporal 62669 8235 113450 184354
## Sum 197023 379450 412934 989407
# Escribir datos en las hojas respectivas
writeData(wb, sheet = "Tabla1", x = tabla1, startRow =3 )
writeData(wb, sheet = "Tabla1", x = "Cantidad total de empresas por obligación tributaria según estado del RUC. Año fiscal 2022." , startRow =1 , startCol= "B", borders = "all")
############################################
############################################################
############## FILTRO 1 ###################################
############################################################
## Filtro por la variable Estado="Activo"
datos3 <- datos2 %>%
filter(Estado == "ACTIVO")
#############################################################
nrow(datos3)
## [1] 409053
############################################################
############## FILTRO 2 ###################################
############################################################
# Crear un vector con los tipos de sociedad a excluir
tipos_a_excluir <- c(
"ASOCIACION_CAPACIDAD_RESTRINGIDA",
"ASOCIACION_UTILIDAD_PUBLICA",
"CAUSA_JUDICIAL_SENABICO",
"COOPERATIVA",
"EA_EM",
"FIDEICOMISO",
"FONDOS_MUTUOS_EJT",
"FONDOS_PATRIMONIALES_INVERSION_EJT",
"FUNDACION",
"GUBERNAMENTAL",
"MOVIMIENTOS_INTERNOS_PARTIDARIOS",
"MUNICIPAL",
"SIN_FINES_LUCRO",
"SUCESIONES",
"UNIDAD_PRODUCTIVA_CONJUNTA_UPC",
"UNIVERSIDAD"
)
# Crear una nueva variable para clasificar TipoSociedad
datos3$ExcluirTipoSociedad <- ifelse(datos3$TipoSociedad %in% tipos_a_excluir,
"Excluir", "No excluir")
#reemplazar los valores vación en TipoSociedad por "PERSONA FÍSICA"
datos3$TipoSociedad <- ifelse(is.na(datos3$TipoSociedad),
"PERSONA FÍSICA", datos3$TipoSociedad)
table(datos3$ExcluirTipoSociedad)
##
## Excluir No excluir
## 20194 388859
########### TABLA 2 ###################
datos4 <- datos3 %>%
filter(ExcluirTipoSociedad == "Excluir")
nrow(datos4)
## [1] 20194
#cuales son los tipos excluidos
tabla2=table(datos4$TipoSociedad)
tabla2 <- addmargins(tabla2, margin = 1)
tabla2
##
## ASOCIACION_CAPACIDAD_RESTRINGIDA ASOCIACION_UTILIDAD_PUBLICA
## 4734 1000
## CAUSA_JUDICIAL_SENABICO COOPERATIVA
## 1 606
## EA_EM FIDEICOMISO
## 26 2963
## FONDOS_MUTUOS_EJT FONDOS_PATRIMONIALES_INVERSION_EJT
## 10 20
## FUNDACION GUBERNAMENTAL
## 304 25
## MOVIMIENTOS_INTERNOS_PARTIDARIOS MUNICIPAL
## 3 2
## SIN_FINES_LUCRO SUCESIONES
## 10354 60
## UNIDAD_PRODUCTIVA_CONJUNTA_UPC UNIVERSIDAD
## 57 29
## Sum
## 20194
tabla2<-data.frame(tabla2)
tabla2
nuevos_nombres <- c("Personería Jurídica","Cantidad") # Define los nuevos nombres que quieras asignar
# Asignar los nuevos nombres a las columnas del data.frame
colnames(tabla2) <- nuevos_nombres
tabla2
# Escribir datos en las hojas respectivas
writeData(wb, sheet = "Tabla2", x = tabla2, startRow =3 )
writeData(wb, sheet = "Tabla2", x = "Excepciones aplicadas por tipo de personería jurídica. Año fiscal 2022." , startRow =1 , startCol= "B", borders = "all")
############################################
dim(tabla2)
## [1] 17 2
class(tabla2)
## [1] "data.frame"
###################### APLICACIÓN DEL FILTRO POR TIPOSOCIEDAD #########
datos5 <- datos3 %>%
filter(ExcluirTipoSociedad == "No excluir")
nrow(datos5)
## [1] 388859
#########################################################################
# Crear un vector de recodificación de tiposociedad no excluidos
recodificacion <- c(
"CONDOMINIO" = "Condominio",
"CONSORCIO_COPROPIETARIOS" = "Consorcio Copropietarios",
"CONSORCIOS_REALIZACION_OBRA_PUBLICA" = "Consorcios Realización Obra Pública",
"CONSORCIOS_UNIONES_TEMPORALES" = "Consorcios Uniones Temporales",
"CONSORCIOS_UT" = "Consorcios Uniones Temporales",
"CONTRATO_SOCIETARIO_RURAL_EJT" = "Contrato Societario Rural",
"EAS" = "Empresa de Acciones Simplificadas (EAS)",
"EAS_UNIPERSONAL" = "EAS Unipersonal",
"EIRL" = "Empresa Individual de Responsabilidad Limitada",
"FIRMA_EXTRANJERA" = "Firma Extranjera",
"OTROS" = "Otros",
"PERSONA FÍSICA" = "Persona Física",
"SAECA" = "Sociedad Anónima Emisora de Capital Abierto",
"SOCIEDAD_ANONIMA" = "Sociedad Anónima",
"SOCIEDAD_COLECTIVA" = "Sociedad Colectiva",
"SOCIEDAD_COMANDITA" = "Sociedad Comandita",
"SOCIEDAD_SIMPLE" = "Sociedad Simple",
"SRL" = "Sociedad de Responsabilidad Limitada"
)
datos5 <- datos5 %>%
mutate(TipoSociedad_rec = if_else(TipoSociedad %in% names(recodificacion),
recodificacion[TipoSociedad],
TipoSociedad))
########### TABLA 3 ###################
tabla3=table(datos5$TipoSociedad_rec)
tabla3 <- addmargins(tabla3, margin = 1)
tabla3=data.frame(tabla3)
nuevos_nombres <- c("Personería Jurídica","Cantidad") # Define los nuevos nombres que quieras asignar
# Asignar los nuevos nombres a las columnas del data.frame
colnames(tabla3) <- nuevos_nombres
tabla3
# Escribir datos en las hojas respectivas
writeData(wb, sheet = "Tabla3", x = tabla3, startRow =3 )
writeData(wb, sheet = "Tabla3", x = "Personerías jurídicas no excluidas de la BDMIPYMES." , startRow =1 , startCol= "B", borders = "all")
############################################
names(datos5)
## [1] "RUC" "DV"
## [3] "CodigoActividadEconomica" "Fechaconstitucionanio"
## [5] "TipoSociedad" "TipoContribuyente"
## [7] "Departamento" "Distrito"
## [9] "Estado" "Impuesto"
## [11] "Categoria" "MTESS"
## [13] "IPS" "T_hombres"
## [15] "T_mujeres" "Estado_recode"
## [17] "ExcluirTipoSociedad" "TipoSociedad_rec"
########### TABLA 4 ###################
###########
########### descripciones_actividades <-
library(dplyr)
referencias <- read_delim("G:/Mi unidad/Mipymes/descripciones_actividades.csv", delim = ";")
## Rows: 699 Columns: 7
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (5): CodigoActividadEconomica, ExcluyeActividadEconomica, DescripcionAct...
## dbl (2): Cod Act Economica Princ_2dig, Cod Act Economica Princ_2digNUM
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Eliminar duplicados
referencias <- distinct(referencias)
# Verificar nombres de columnas
str(referencias$CodigoActividadEconomica)
## chr [1:699] "13000" "154100" "179999" "182004" "202200" "271003" "342000" ...
# Unir las descripciones con tu data frame principal basado en el código de actividad económica
datos6 <- datos5 %>%
left_join(referencias, by = c("CodigoActividadEconomica" = "CodigoActividadEconomica")) %>%
distinct()
nrow(datos6)
## [1] 388859
table(datos6$sectores3)
##
## Primario Secundario Servicios
## 38111 51474 297185
## Sin código equivalente
## 1
table(datos6$sectores3)
##
## Primario Secundario Servicios
## 38111 51474 297185
## Sin código equivalente
## 1
######################################################################
datos6a <- datos6 %>%
filter(ExcluyeActividadEconomica == "SÍ excluido por actividad")
nrow(datos6a)
## [1] 14063
############################################################
######################################################################
datos6b <- datos6 %>%
filter(ExcluyeActividadEconomica == "NO excluido por actividad")
nrow(datos6b)
## [1] 374796
############################################################
table(datos6b$sectores3)
##
## Primario Secundario Servicios
## 38111 51474 283122
## Sin código equivalente
## 1
#table(datos_con_descripcionessifil$CodigoActividadEconomica)
tabla4=(addmargins(table(datos6a$`Cod Act Economica Princ_2dig`),1))
tabla4=data.frame(tabla4)
tabla4
nombres<-c("AEP","Cantidad")
colnames(tabla4)<-nombres
tabla4
writeData(wb, sheet = "Tabla4", x = tabla4, startRow =3 )
writeData(wb, sheet = "Tabla4", x = "Excepciones aplicadas por actividad económica principal. Año fiscal 2022." , startRow =1 , startCol= "B", borders = "all")
############################################
######################################################################
datos7 <- datos6 %>%
filter(ExcluyeActividadEconomica == "NO excluido por actividad")
nrow(datos7)
## [1] 374796
############################################################
tabla4.2=addmargins(table(datos7$Categoria))
tabla4.2<-data.frame(tabla4.2)
tabla4.2
colnames(tabla4.2)<-c("Categoría","Cantidad")
tabla4.2
############################################################
############## FILTRO 4: CATEGORIA (tamaño de empresa) ####
############################################################
############################################################
bdmipymes<- datos7 %>%
filter(datos7$Categoria != "Grande")
nrow(bdmipymes)
## [1] 366977
############################################################
table(bdmipymes$sectores3)
##
## Primario Secundario Servicios
## 36709 50190 277991
## Sin código equivalente
## 1
########### FIGURA 1 ############################
# El elemento en la fila 3 y la columna 2
valor1 <- tabla1[5, 4]
valor1
## [1] 989407
valor2 <- tabla1[4, 4]
valor2
## [1] 184354
valor3 <- tabla1[1, 4]
valor3
## [1] 409053
valor4 <- tabla1[2, 4]
valor4
## [1] 21863
valor5 <- tabla1[1, 4]
valor5
## [1] 409053
valor5a <- tabla1[1, 4]
valor5a
## [1] 409053
valor6 <- tabla2[17,2]
valor6
## [1] 20194
valor7 <- as.vector(tabla4[10,2])
valor7
## [1] 14063
valor8 <- (tabla4.2)[1,2]
valor8 #"Excluidos por categoría"
## [1] 7819
valor9<-(valor3 - valor6 - valor7 - valor8)
valor9
## [1] 366977
valoresfig1 <- c(valor1 , valor2 , valor3 ,valor4 , valor5 , valor5a, valor6 , valor7 , valor8, valor9)
valoresfig1
## [1] 989407 184354 409053 21863 409053 409053 20194 14063 7819 366977
nombres <- c("Base inicial","Suspensión Temporal","Activos","Bloqueado","Cancelado","Categorizados" ,"Excluidos por personería jurídica","Excluidos por actividad económica","Excluidos por categoría","BDMIPYMES")
valoresfigura1<-data.frame( nombres ,valoresfig1)
valoresfigura1
############################################
writeData(wb, sheet = "Figura1", x = valoresfigura1, startRow =3, startCol= "B", borders = "all")
writeData(wb, sheet = "Figura1", x = "Proceso de obtención de la BDMIPYMES. Año fiscal 2022.
" , startRow =1 , startCol= "B", borders = "all")
################ FIGURA 2 #######################################
# Distribución absoluta y porcentual de las empresas que conforman la BDMIPYMES y empresas grandes (Total de empresas 374.807). Año fiscal 2022.
names(bdmipymes)
## [1] "RUC" "DV"
## [3] "CodigoActividadEconomica" "Fechaconstitucionanio"
## [5] "TipoSociedad" "TipoContribuyente"
## [7] "Departamento" "Distrito"
## [9] "Estado" "Impuesto"
## [11] "Categoria" "MTESS"
## [13] "IPS" "T_hombres"
## [15] "T_mujeres" "Estado_recode"
## [17] "ExcluirTipoSociedad" "TipoSociedad_rec"
## [19] "Cod Act Economica Princ_2dig" "Cod Act Economica Princ_2digNUM"
## [21] "ExcluyeActividadEconomica" "DescripcionActividadEconomica"
## [23] "sectores3" "sectores4"
#TABLA PARA FIGURA 2
distabs<- addmargins(table(datos7$Categoria))
cbind(distabs)
## distabs
## Grande 7819
## Mediana 9023
## Micro 321137
## Pequeña 36817
## Sum 374796
writeData(wb, sheet = "Figura2", x = distabs , startRow =4 , startCol= "B", borders = "all")
writeData(wb, sheet = "Figura2", x = "Distribución absoluta y porcentual de las empresas que conforman la BDMIPYMES y empresas grandes (Total de empresas 374.807). Año fiscal 2022." , startRow =1 , startCol= "B", borders = "all")
################ FIGURA 3 #######################################
#### SOLO MIPYMES ###
#TABLA PARA FIGURA 2
distabs<- addmargins(cbind(table(bdmipymes$Categoria)),1)
distabs
## [,1]
## Mediana 9023
## Micro 321137
## Pequeña 36817
## Sum 366977
writeData(wb, sheet = "Figura3", x = distabs , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Figura3", x = "titulo" , startRow =1 , startCol= "B", borders = "all")
table(bdmipymes$sectores3)
##
## Primario Secundario Servicios
## 36709 50190 277991
## Sin código equivalente
## 1
################ FIGURA 4 #######################################
# Distribución porcentual de mipymes por sectores de la economía, según categoría. Año fiscal 2022.
#
bdmipymesfil <- bdmipymes %>%
filter(bdmipymes$sectores3 != "Sin código equivalente")
# Calcular la tabla de frecuencias y escribir los datos en un archivo Excel
distabsf4 <- table(bdmipymesfil$sectores3, bdmipymesfil$Categoria)
distabsf4
##
## Mediana Micro Pequeña
## Primario 2112 26334 8263
## Secundario 1193 44151 4846
## Servicios 5717 248581 23693
# Calcular la distribución porcentual y ordenar las categorías
distporf4 <- round(prop.table(distabsf4) * 100, 1)
orden_categorias <- c("Micro", "Pequeña", "Mediana")
distporf4 <- distporf4[, orden_categorias]
# Calcular la distribución porcentual de mipymes por sectores de la economía, según categoría
frecuencias_por_sector <- round(addmargins(prop.table(table(bdmipymesfil$Categoria, bdmipymesfil$sectores3), margin = 1), margin = c(1,2)) * 100, 2)
frecuencias_por_sector <- frecuencias_por_sector[orden_categorias, ]
frecuencias_por_sector
##
## Primario Secundario Servicios Sum
## Micro 8.25 13.84 77.91 100.00
## Pequeña 22.45 13.17 64.38 100.00
## Mediana 23.41 13.22 63.37 100.00
# Escribir los resultados en el archivo Excel
writeData(wb, sheet = "Figura4", x = frecuencias_por_sector, startRow = 3, startCol = "B", borders = "all")
writeData(wb, sheet = "Figura4", x = "Distribución porcentual de mipymes por sectores de la economía, según categoría. Año fiscal 2022.", startRow = 1, startCol = "B", borders = "all")
################ FIGURA 5 #######################################
# Crear dataframe
bdmipymes_filtrado <- bdmipymes[bdmipymes$sectores4 != "Sin código equivalente", ]
distabsf4 <- table(bdmipymes_filtrado$sectores4, bdmipymes_filtrado$Categoria)
writeData(wb, sheet = "Figura4", x = distabsf4, startRow = 3, startCol = "A", borders = "all")
distporf4 <- round(prop.table(distabsf4) * 100, 1)
# Vector con el orden deseado de las categorías y sectores
orden_categorias <- c("Micro", "Pequeña", "Mediana")
orden_sectores <- c("Primario", "Secundario", "Servicios", "Comercio")
# Ordenar las filas de la tabla distabsf4 según el orden de las categorías
distabsf4 <- distabsf4[orden_sectores, orden_categorias]
fig5 <- round(addmargins(prop.table(table(bdmipymes_filtrado$Categoria, bdmipymes_filtrado$sectores4), margin = 1), margin = c(1,2)) * 100, 2)
# Ordenar las columnas de la tabla de frecuencias según el orden de los sectores
fig5 <- fig5[, orden_sectores]
fig5 <- fig5[orden_categorias, ]
fig5
##
## Primario Secundario Servicios Comercio
## Micro 8.25 13.84 40.50 37.41
## Pequeña 22.45 13.17 23.64 40.74
## Mediana 23.41 13.22 20.16 43.21
writeData(wb, sheet = "Figura5", x = fig5 , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Figura5", x = "Distribución porcentual de las mipymes por categoría, según sectores de la economía. Año fiscal 2022." , startRow =1 , startCol= "B", borders = "all")
################ FIGURA 6 #######################################
# Distribución porcentual de mipymes por departamentos
bdmipymes <- bdmipymes %>%
mutate(Departamentorec= recode(Departamento,
"CAPITAL" = "Asunción",
"ITAPUA" = "Itapúa",
"ALTO PARANA" = "Alto Paraná",
"BOQUERON" = "Boquerón",
"CENTRAL" = "Central",
"NEEMBUCU" = "Ñeembucú",
"CAAGUAZU" = "Caaguazú",
"CANINDEYU" = "Canindeyú",
"CONCEPCION" = "Concepción",
"PARAGUARI" = "Paraguarí",
"PTE. HAYES" = "Presidente Hayes",
"MISIONES" = "Misiones",
"CORDILLERA" = "Cordillera",
"GUAIRA" = "Guairá",
"SAN PEDRO" = "San Pedro",
"AMAMBAY" = "Amambay",
"CAAZAPA" = "Caazapá",
"ALTO PARAGUAY" = "Alto Paraguay",
"CHACO" = "Alto Paraguay"
))
# Calcula la tabla de frecuencias y convierte los porcentajes
distabsf6 <- round(prop.table(table(bdmipymes$Departamentorec)) * 100, 2)
# Ordena las categorías del Departamento según el porcentaje de mayor a menor
distabsf6 <- distabsf6[order(distabsf6, decreasing = TRUE)]
# Crea un data frame con el resultado
distabsf6 <- as.data.frame(distabsf6)
# Renombra la columna
colnames(distabsf6) <- c("Departamento","Porcentaje")
# Muestra el resultado
distabsf6
writeData(wb, sheet = "Figura6", x = distabsf6 , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Figura6", x = "Distribución porcentual de las mipymes por departamentos. Año fiscal 2022." , startRow =1 , startCol= "B", borders = "all")
################ FIGURA 7 #######################################
bdmipymes_filtrado <- bdmipymes[bdmipymes$sectores4 != "Sin código equivalente", ]
fig7 <- table(bdmipymes_filtrado$sectores4, bdmipymes_filtrado$Departamentorec)
fig7 <- round(prop.table(fig7) * 100, 1)
# Vector con el orden deseado de las categorías y sectores
orden_categorias <- c("Micro", "Pequeña", "Mediana")
# Ordenar las filas de la tabla fig7 según el orden de las categorías
fig7 <- fig7[orden_categorias]
fig7 <- round(prop.table(table(bdmipymes_filtrado$Departamentorec, bdmipymes_filtrado$sectores4), margin = 1) * 100, 2)
# Ordenar las columnas de la tabla de frecuencias según el orden de los sectores
fig7 <- fig7[, orden_sectores]
fig7
##
## Primario Secundario Servicios Comercio
## Alto Paraguay 42.37 5.92 19.21 32.50
## Alto Paraná 12.85 12.42 33.30 41.44
## Amambay 14.11 8.83 31.31 45.76
## Asunción 3.59 10.98 52.96 32.47
## Boquerón 45.65 10.88 25.91 17.56
## Caaguazú 19.50 14.32 26.92 39.25
## Caazapá 22.37 11.08 25.96 40.59
## Canindeyú 25.66 9.10 27.92 37.31
## Central 1.27 16.83 43.63 38.28
## Concepción 11.40 12.37 32.91 43.32
## Cordillera 5.79 16.81 33.81 43.59
## Guairá 18.69 13.80 28.04 39.46
## Itapúa 19.85 13.69 31.00 35.47
## Misiones 9.73 14.56 37.44 38.27
## Ñeembucú 16.03 15.80 26.20 41.97
## Paraguarí 7.52 15.63 30.27 46.58
## Presidente Hayes 29.97 11.36 26.14 32.53
## San Pedro 22.11 9.91 27.07 40.90
writeData(wb, sheet = "Figura7", x = fig7 , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Figura7", x = "Distribución porcentual de las mipymes por sector económico, según departamentos. Año fiscal 2022." , startRow =1 , startCol= "B", borders = "all")
################ FIGURA 8 #######################################
distabsf8a <- as.vector(cbind(addmargins(table(bdmipymes$IPS),1)))
valor1=distabsf8a[3]
valor1
## [1] 366977
valor2=distabsf8a[1] #sin ips
valor2
## [1] 310706
valor3=distabsf8a[2] # con ips
valor3
## [1] 56271
distporf8b <- as.vector(cbind(prop.table(table(bdmipymes$IPS)), 1) * 100)
valor4=distporf8b[1] #porcentaje sin ips
valor4
## [1] 84.66634
valor5=distporf8b[2] #porcentaje con ips
valor5
## [1] 15.33366
# Crear un nuevo campo de clasificación
bdmipymesips <- filter(bdmipymes, IPS == "SI")
distabsf8c <- as.vector((table(bdmipymesips$MTESS)))
valor7=distabsf8c[1] #sin mtess
valor7
## [1] 13022
valor8=distabsf8c[2] # con mtess
valor8
## [1] 43249
distporf8d <- as.vector((prop.table(table(bdmipymesips$MTESS))) * 100)
valor9=distporf8d[1] #porcentaje IPS sin mtess
valor10=distporf8d[2] #porcentaje IPS con mtess
valor9
## [1] 23.14158
valor10
## [1] 76.85842
valor11=valor7/valor1*100 #porcentaje BDMIPYMES con MTESS
valor12=valor8/valor1*100 #porcentaje BDMIPYMES SIN MTESS
valor11
## [1] 3.548451
valor12
## [1] 11.78521
valores=round(c(valor1, valor2, valor3, valor4, valor5, valor7, valor8, valor11, valor12, valor9, valor10),1.01)
nombres=c("BDMIPYMES","Sin IPS","Con IPS","% sin IPS sobre BDMIPYMES","% con IPS sobre BDMIPYMES","Sin MTESSS","Con MTESS","% con MTESS sobre BDMIPYMES","% sin MTESS sobre BDMIPYMES", "% con MTESS sobre IPS","% sin MTESS sobre IPS")
figura8=data.frame(valores, nombres)
figura8
writeData(wb, sheet = "Figura8", x = figura8 , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Figura8", x = "Determinación de las empresas que pueden formar parte del RENAMIPYMES. Año fiscal 2022.
" , startRow =1 , startCol= "B", borders = "all")
################ FIGURA 9 #######################################
renamipymes <- subset(bdmipymes, IPS=="SI" & MTESS=="SI")
fig9=cbind(addmargins(table(renamipymes$Categoria )))
fig9
## [,1]
## Mediana 5816
## Micro 23866
## Pequeña 13567
## Sum 43249
orden_categorias <- c("Micro", "Pequeña", "Mediana")
fig9 <- cbind(fig9[orden_categorias, ])
fig9
## [,1]
## Micro 23866
## Pequeña 13567
## Mediana 5816
writeData(wb, sheet = "Figura9", x = fig9 , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Figura9", x = "Distribución absoluta y porcentual de las mipymes (RENAMIPYMES) según categoría de empresa. Año fiscal 2022" , startRow =1 , startCol= "B", borders = "all")
# Clasificacion entre Empresas Formalizadas y No formalizadas
#
library(dplyr)
bdmipymes <- bdmipymes %>%
mutate(empresaformal = ifelse(IPS == "SI" & MTESS == "SI", "Formalizadas", "No formalizadas"))
tabla9a=addmargins(table(bdmipymes$empresaformal),margin=1)
tabla9a
##
## Formalizadas No formalizadas Sum
## 43249 323728 366977
################ FIGURA 9 #######################################
bdmipymes <- bdmipymes[bdmipymes$sectores3 != "Sin código equivalente", ]
figura10 <- table(bdmipymes$Categoria, bdmipymes$empresaformal)
figura10 <- addmargins(round(prop.table(figura10,margin=1) * 100, 1),2)
# Vector con el orden deseado de las categorías
orden_categorias <- c("Micro", "Pequeña", "Mediana")
figura10
##
## Formalizadas No formalizadas Sum
## Mediana 64.5 35.5 100.0
## Micro 7.5 92.5 100.0
## Pequeña 36.9 63.1 100.0
# Reordenar las columnas de la tabla de resultados según el orden de las categorías
figura10 <- figura10[orden_categorias, ]
figura10
##
## Formalizadas No formalizadas Sum
## Micro 7.5 92.5 100.0
## Pequeña 36.9 63.1 100.0
## Mediana 64.5 35.5 100.0
writeData(wb, sheet = "Figura10", x = figura10 , startRow =5 , startCol= "B", borders = "all")
writeData(wb, sheet = "Figura10", x = "Distribución absoluta y porcentual de las mipymes (RENAMIPYMES) según categoría de empresa. Año fiscal 2022" , startRow =1 , startCol= "B", borders = "all")
writeData(wb, sheet = "Figura10", x = tabla9a , startRow =2 , startCol= "B", borders = "all")
################ FIGURA 11 #######################################
dpto1=data.frame(table(renamipymes$Departamentorec))
dpto1
dpto2=data.frame(table(bdmipymes$Departamentorec))
dpto2
porcen=round(dpto1$Freq/dpto2$Freq*100,0)
dpto=dpto1$Var1
fig11=data.frame(dpto,porcen)
fig11 <- fig11[order(fig11$porcen), ]
fig11
fig11 <- fig11 %>% arrange(desc(porcen))
colnames(fig11) <- c("Departamento", "Porcentaje")
fig11
writeData(wb, sheet = "Figura11", x = fig11 , startRow =5 , startCol= "B", borders = "all")
writeData(wb, sheet = "Figura11", x = "Distribución absoluta y porcentual de las mipymes (RENAMIPYMES) según categoría de empresa. Año fiscal 2022" , startRow =1 , startCol= "B", borders = "all")
################ FIGURA 12 #######################################
renamipymes_filtrado <- renamipymes[renamipymes$sectores3 != "Sin código equivalente", ]
distabsf12 <- table(renamipymes_filtrado$sectores3, renamipymes_filtrado$Categoria)
writeData(wb, sheet = "Figura4", x = distabsf12, startRow = 3, startCol = "A", borders = "all")
distporf4 <- round(prop.table(distabsf12) * 100, 1)
# Vector con el orden deseado de las categorías
orden_categorias <- c("Micro", "Pequeña", "Mediana")
# Reordenar las columnas de la tabla de resultados según el orden de las categorías
distabsf12 <- distabsf12[, orden_categorias]
# Ordenar las filas de la tabla de frecuencias según el orden de las categorías primarias
frecuencias_por_sector_fig12 <- round(addmargins(prop.table(table(renamipymes_filtrado$Categoria, renamipymes_filtrado$sectores3), margin = 1), margin = c(1,2)) * 100, 2)
frecuencias_por_sector_fig12 <- frecuencias_por_sector_fig12[orden_categorias, ]
frecuencias_por_sector_fig12
##
## Primario Secundario Servicios Sum
## Micro 7.97 16.54 75.49 100.00
## Pequeña 15.54 16.57 67.89 100.00
## Mediana 18.61 15.41 65.98 100.00
writeData(wb, sheet = "Figura12", x = frecuencias_por_sector_fig12 , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Figura12", x = "Distribución porcentual de las mipymes formalizadas (RENAMIPYMES) por categoría según sectores de la economía y total. Año fiscal 2022." , startRow =1 , startCol= "B", borders = "all")
################ FIGURA 13 #######################################
renamipymes_filtrado <- renamipymes[renamipymes$sectores4 != "Sin código equivalente", ]
distabsf13 <- table(renamipymes_filtrado$sectores4, renamipymes_filtrado$Categoria)
writeData(wb, sheet = "Figura4", x = distabsf13, startRow = 3, startCol = "A", borders = "all")
distporf13 <- round(prop.table(distabsf13) * 100, 1)
# Vector con el orden deseado de las categorías y sectores
orden_categorias <- c("Micro", "Pequeña", "Mediana")
orden_sectores <- c("Primario", "Secundario", "Servicios", "Comercio")
# Ordenar las filas de la tabla distabsf13 según el orden de las categorías
distabsf13 <- distabsf13[orden_sectores, orden_categorias]
fig13 <- round(addmargins(prop.table(table(renamipymes_filtrado$Categoria, renamipymes_filtrado$sectores4), margin = 1), margin = c(1,2)) * 100, 2)
# Ordenar las columnas de la tabla de frecuencias según el orden de los sectores
fig13 <- fig13[, orden_sectores]
fig13 <- fig13[orden_categorias, ]
fig13
##
## Primario Secundario Servicios Comercio
## Micro 7.97 16.54 39.94 35.55
## Pequeña 15.54 16.57 27.89 40.00
## Mediana 18.61 15.41 22.29 43.70
writeData(wb, sheet = "Figura13", x = fig13 , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Figura13", x = "Distribución porcentual de las mipymes formalizadas (RENAMIPYMES) por categoría según sectores de la economía. Año fiscal 2022." , startRow =1 , startCol= "B", borders = "all")
# Calcular la antigüedad de la empresa en años
#
# # Filtrar la base de datos
bdmipymesfil <- bdmipymes %>%
filter(Fechaconstitucionanio > 0 & Fechaconstitucionanio < 2023)
bdmipymesfil$Antiguedad <- 2022 - as.numeric(bdmipymesfil$Fechaconstitucionanio)
table(bdmipymesfil$Antiguedad)
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
## 4281 3446 2018 2099 2168 1876 1701 1751 1687 1663 1314 1135 994 848 937 756
## 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
## 721 798 475 391 345 307 348 338 311 302 285 312 265 167 156 134
## 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
## 108 91 68 47 43 52 44 36 33 33 40 51 36 35 45 25
## 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
## 27 28 15 16 15 14 11 9 7 3 9 5 9 8 5 5
## 64 65 66 67 68 69 70 71 72 74 75 77 78 79 81 84
## 3 9 4 4 3 4 9 4 2 1 2 1 2 1 2 2
## 86 88 93 102 106 107 108 111 112
## 1 1 1 1 1 1 1 1 1
mean((bdmipymesfil$Antiguedad), na.rm = TRUE)
## [1] 9.105672
addmargins(table(renamipymes$Categoria))
##
## Mediana Micro Pequeña Sum
## 5816 23866 13567 43249
################ TABLA 5 #######################################
library(reshape2)
##
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
##
## smiths
# Calcular el valor promedio de la antigüedad por Departamento y Categoría
antiguedad_promedio <- aggregate(bdmipymesfil$Antiguedad,
by = list(Departamentorec = bdmipymesfil$Departamentorec,
Categoria = bdmipymesfil$Categoria),
FUN = mean,
na.rm = TRUE)
# Usar dcast para crear la tabla de contingencia con el valor promedio de la antigüedad
tabla5 <- dcast(antiguedad_promedio, Departamentorec ~ Categoria, value.var = "x")
# Mostrar la tabla de contingencia
print(tabla5)
## Departamentorec Mediana Micro Pequeña
## 1 Alto Paraguay 11.600000 10.000000 12.411765
## 2 Alto Paraná 10.417460 6.806452 9.183099
## 3 Amambay 9.980198 7.569378 9.878205
## 4 Asunción 12.651708 7.786615 11.470570
## 5 Boquerón 9.256000 8.218750 7.835616
## 6 Caaguazú 8.785714 9.553571 10.253968
## 7 Caazapá 15.470588 10.952830 16.451613
## 8 Canindeyú 9.328125 7.802292 9.748031
## 9 Central 11.734756 7.697985 10.311069
## 10 Concepción 13.129630 8.312102 11.965116
## 11 Cordillera 10.972973 11.130312 12.402985
## 12 Guairá 15.957447 8.027027 11.975000
## 13 Itapúa 10.804651 8.132440 10.946548
## 14 Misiones 14.526316 13.081871 16.360000
## 15 Ñeembucú 13.086957 23.620690 15.096774
## 16 Paraguarí 12.173913 11.455497 11.888889
## 17 Presidente Hayes 14.370370 10.772727 16.777778
## 18 San Pedro 11.555556 8.887550 12.933333
writeData(wb, sheet = "Tabla5", x = tabla5 , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Tabla5", x = "Antigüedad promedio según categoría de empresa, por departamentos. Año fiscal 2022." , startRow =1 , startCol= "B", borders = "all")
################ TABLA 6 #######################################
# Contar el número de empresas por categoría
renamipymes$ref<-1
recuento <- aggregate(as.integer(ref) ~ Categoria, data = renamipymes, FUN = sum)
# Renombrar las columnas
colnames(recuento) <- c("Categoria", "Total_empresas")
# Imprimir el resultado
recuento
totalempre <- sum(as.integer(recuento$Total_empresas), na.rm = TRUE)
totalempre
## [1] 43249
################ TABLA 6 hombres #######################################
# Contar el número de empresas por categoría
recuentoH <- aggregate(as.integer(T_hombres) ~ Categoria, data = renamipymes, FUN = sum )
# Imprimir el resultado
recuentoH
################ TABLA 6 mujeres #######################################
# Contar el número de empresas por categoría
recuentoM <- aggregate(as.integer(T_mujeres) ~ Categoria, data = renamipymes, FUN = sum )
# Imprimir el resultado
recuentoM
################ TABLA 6 total #######################################
# Contar el número de empresas por categoría
renamipymes$T_total=as.integer(renamipymes$T_hombres)+as.integer(renamipymes$T_mujeres)
recuentoG <- aggregate(as.integer(T_total) ~ Categoria, data = renamipymes, FUN = sum )
# Imprimir el resultado
recuentoG
porcentajesH=recuentoH$`as.integer(T_hombres)`/recuentoG$`as.integer(T_total)`
porcH=data.frame(porcentajesH)
porcH
porcentajesM=recuentoM$`as.integer(T_mujeres)`/recuentoG$`as.integer(T_total)`
porcM=data.frame(porcentajesM)
porcM
# promedio empleados
#
promedioemple=recuentoG$`as.integer(T_total)`/recuento$Total_empresas
promemple=data.frame(promedioemple)
promemple
# Agregar los valores únicos de la variable "Categoria"
tabla6 <- data.frame(Categoria = recuento$Categoria, Total_empleados = recuentoG$`as.integer(T_total)`, porcentajesH = porcH$porcentajesH, porcentajesM = porcM$porcentajesM, Promedio_empleados = promemple$promedioemple)
tabla6
writeData(wb, sheet = "Tabla6", x = tabla6 , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Tabla6", x = "Número de empleados, distribución porcentual por género y promedio de empleados de mipymes formalizadas (RENAMIPYMES), según categoría de empresa. Año fiscal 2022.
" , startRow =1 , startCol= "B", borders = "all")
################ TABLA 7 #######################################
# Contar el número de empresas por categoría
#
tabla7a=table(datos7$Categoria)
tabla7a
##
## Grande Mediana Micro Pequeña
## 7819 9023 321137 36817
datos7a <- datos7[datos7$Categoria == "Grande" & datos7$IPS == "SI" & datos7$MTESS == "SI", ]
tabla7b <- data.frame(table(datos7a$Categoria))
tabla7b
################ TABLA 6 hombres #######################################
# Contar el número de empresas por categoría
recuentoH <- aggregate(as.integer(T_hombres) ~ Categoria, data = datos7a, FUN = sum )
# Imprimir el resultado
recuentoH<-data.frame(recuentoH)
recuentoH
################ TABLA 6 mujeres #######################################
# Contar el número de empresas por categoría
recuentoM <- aggregate(as.integer(T_mujeres) ~ Categoria, data = datos7a, FUN = sum )
# Imprimir el resultado
recuentoM
################ TABLA 6 total #######################################
# Contar el número de empresas por categoría
datos7a$T_total=as.integer(datos7a$T_hombres)+as.integer(datos7a$T_mujeres)
recuentosoloG <- aggregate(as.integer(T_total) ~ Categoria, data = datos7a, FUN = sum )
# Imprimir el resultado
recuentosoloG
porcentajessoloG_H=recuentoH$as.integer.T_hombres./recuentosoloG$`as.integer(T_total)`
porcentajessoloG_H=data.frame(porcentajessoloG_H)
porcentajessoloG_H
porcentajessoloG_M=recuentoM$`as.integer(T_mujeres)`/recuentosoloG$`as.integer(T_total)`
porcentajessoloG_M=data.frame(porcentajessoloG_M)
porcentajessoloG_M
# promedio empleados
#
promediosoloG=recuentosoloG$`as.integer(T_total)`/tabla7b$Freq
promediosoloG=data.frame(promediosoloG)
promediosoloG
# Agregar los valores únicos de la variable "Categoria"
tabla7 <- data.frame(Categoria = recuentosoloG$Categoria, Total_empleados = recuentosoloG$`as.integer(T_total)`, porcentajesH = porcentajessoloG_H$porcentajessoloG_H, porcentajesM = porcentajessoloG_M$porcentajessoloG_M, Promedio_empleados = promediosoloG$promediosoloG)
tabla7
writeData(wb, sheet = "Tabla7", x = tabla7 , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Tabla7", x = "Número de empleados, distribución porcentual por género y promedio de empleados con seguro IPS e inscriptos en el MTESS de empresas categorizadas como grandes. Año fiscal 2022.
" , startRow =1 , startCol= "B", borders = "all")
table=table(renamipymes$sectores3)
table
##
## Primario Secundario Servicios
## 5091 7090 31055
length(renamipymes$sectores3)
## [1] 43249
length(renamipymes$sectores3)
## [1] 43249
length(renamipymes$Categoria)
## [1] 43249
length(renamipymes$T_total)
## [1] 43249
################ TABLA 8 #######################################
library(reshape2)
# Calcular el valor promedio de la antigüedad por Departamento y Categoría
# Calcular el recuento de observaciones por Departamento y Categoría
# Calcular el recuento de observaciones por Departamento y Categoría
renamipymes$ref<-1
totalemple <- aggregate(renamipymes$ref,
by = list(Sectores3 = renamipymes$sectores3,
Categoria = renamipymes$Categoria),
FUN = sum,
na.rm = TRUE)
totalemple
writeData(wb, sheet = "Tabla5", x = tabla5 , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Tabla5", x = "Antigüedad promedio según categoría de empresa, por departamentos. Año fiscal 2022." , startRow =1 , startCol= "B", borders = "all")
################ FIGURA 5 #######################################
# Crear dataframe
distabst8 <- table(renamipymes$sectores4, renamipymes$Categoria)
distabst8 <- round(prop.table(distabst8) * 100, 1)
# Vector con el orden deseado de las categorías y sectores
orden_categorias <- c("Micro", "Pequeña", "Mediana")
orden_sectores <- c("Primario", "Secundario", "Servicios", "Comercio")
# Ordenar las filas de la tabla distabsf4 según el orden de las categorías
distabst8 <- distabst8[orden_sectores, orden_categorias]
tabla8a <- round((prop.table(table(renamipymes$Categoria, renamipymes$sectores4))) * 100, 2)
# Ordenar las columnas de la tabla de frecuencias según el orden de los sectores
tabla8b <- tabla8a[, orden_sectores]
tabla8b <- tabla8a[orden_categorias, ]
tabla8b
##
## Comercio Primario Secundario Servicios
## Micro 19.62 4.40 9.13 22.03
## Pequeña 12.55 4.88 5.20 8.75
## Mediana 5.88 2.50 2.07 3.00
writeData(wb, sheet = "Tabla8", x = tabla8b , startRow =3 , startCol= "B", borders = "all")
writeData(wb, sheet = "Tabla8", x = "Distribución porcentual de las mipymes por categoría, según sectores de la economía. Año fiscal 2022.
" , startRow =1 , startCol= "B", borders = "all")
##########################################################
# GUARDAR LOS RESULTADOS EN EL EXCEL
library(openxlsx)
saveWorkbook(wb, "G:/Mi unidad/Mipymes/resultadosActualizados2023vf.xlsx" , overwrite = TRUE)
##########################################################