https://github.com/calderonsamuel/perutranspaeconomica

Obtener datos del Portal de Transparencia Económica Perú con una interfaz de programación consistente y escalable

https://github.com/calderonsamuel/perutranspaeconomica

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.0%) to scientific vocabulary

Keywords

peru r
Last synced: 9 months ago · JSON representation

Repository

Obtener datos del Portal de Transparencia Económica Perú con una interfaz de programación consistente y escalable

Basic Info
Statistics
  • Stars: 3
  • Watchers: 1
  • Forks: 1
  • Open Issues: 6
  • Releases: 3
Topics
peru r
Created almost 4 years ago · Last pushed about 2 years ago
Metadata Files
Readme Changelog License Code of conduct

README.Rmd

---
output: github_document
---



```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "man/figures/README-",
  out.width = "100%"
)

options(pillar.min_chars = 30)
```

# perutranspaeconomica


![runiverse-name](https://calderonsamuel.r-universe.dev/badges/:name)
![runiverse-package](https://calderonsamuel.r-universe.dev/badges/perutranspaeconomica)
[![Codecov test coverage](https://codecov.io/gh/calderonsamuel/perutranspaeconomica/branch/main/graph/badge.svg)](https://app.codecov.io/gh/calderonsamuel/perutranspaeconomica?branch=main)

[![R-CMD-check](https://github.com/calderonsamuel/perutranspaeconomica/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/calderonsamuel/perutranspaeconomica/actions/workflows/R-CMD-check.yaml)
[![Lifecycle: stable](https://img.shields.io/badge/lifecycle-stable-brightgreen.svg)](https://lifecycle.r-lib.org/articles/stages.html#stable)


El objetivo de `{perutranspaeconomica}` es contar con una manera de obtener datos del Portal de Transparencia Económica Perú con una interfaz de programación consistente y escalable.

## Code of Conduct

Please note that the perutranspaeconomica project is released with a [Contributor Code of Conduct](https://contributor-covenant.org/version/2/1/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms.


## Instalación

Existen varias maneras de descargar el paquete. En primer lugar, puedes descargar 
la versión estable  desde CRAN:

```r
install.packages('perutranspaeconomica')
```

Otra opción es instalar la versión en desarrollo desde mi [R-universe](https://calderonsamuel.r-universe.dev/):

```r
# Habilita el repositorio calderonsamuel
options(repos = c(
  calderonsamuel = 'https://calderonsamuel.r-universe.dev',
  CRAN = 'https://cloud.r-project.org'))

# Descargar e instalar perutranspaeconomica en R
install.packages('perutranspaeconomica')
```

La versión en desarrollo también puede descargarse desde [GitHub](https://github.com/) con:

``` r
# install.packages("remotes")
remotes::install_github("calderonsamuel/perutranspaeconomica")
```

## Ejemplo

Con este paquete puedes realizar consultas del Portal de Transparencia Económica del MEF-Perú, específicamente de los módulos de [Consulta de gasto presupuestal](http://apps5.mineco.gob.pe/transparencia/) y de [Consulta de Ingreso Presupuestal](http://apps5.mineco.gob.pe/transparenciaingresos/).

El paquete propone un flujo de trabajo de 1) iniciar consulta, 2) elegir parámetros, y 3) ejecutar consulta. Para ello, se ha creado la clase `` para consolidar una infraestructura interna consistente. El usuario común no va a necesitar interactuar con esa infraestructura directamente ya que se han agregado funciones de soporte que habilitan una interfaz de programación más amigable.

Empezamos por cargar el paquete:

```{r example}
library(perutranspaeconomica)
```

### Iniciar consulta

Para iniciar una consulta tan solo hace falta usar la función `iniciar_transparencia_economica()`. Esto crea un objeto vacío y muestra los parámetros de consulta agregados. Al inicio no tenemos parámetros ni data.

```{r}
iniciar_transparencia_economica()
```

### Elegir parámetros de consulta

La elección de parámetros de consulta se hace con las funciones que empiezan con `elegir_*()`. 

Para consultas en el módulo de gasto presupuestal, se pueden utilizar las siguientes:

- `elegir_periodo_anual()` 
- `elegir_quien_gasta()`
- `elegir_en_que_se_gasta()`
- `elegir_con_que_se_financia()`
- `elegir_como_se_estructura_gasto()`
- `elegir_cuando_se_hizo_gasto()`
- `elegir_donde_se_gasta()`

Para consultas en el módulo de ingreso presupuestal, se pueden utilizar las siguientes:

- `elegir_periodo_anual()` 
- `elegir_quien_recauda()`
- `elegir_fuentes_de_recaudacion()`
- `elegir_como_se_estructura_recaudacion()`
- `elegir_cuando_se_hizo_recaudacion()`

En ambos módulos, la mínima requerida es `elegir_periodo_anual()`. 

Una vez que se le agrega parámetros a la consulta, la interfaz lo refleja. 

```{r}
iniciar_transparencia_economica() %>% 
    elegir_periodo_anual(periodo = 2023)
```

Cada argumento de las funciones `elegir_*()` puede aceptar vectores con más de un elemento para una consulta más potente.

```{r}
iniciar_transparencia_economica() %>% 
    elegir_periodo_anual(periodo = 2020:2023)
```

Con excepción de `elegir_periodo_anual()`, es necesario que las funciones `elegir_*()` tengan, en su conjunto, al menos un argumento definido como `"todos"`. Más adelante se verá que en caso contrario la consulta no prosperará.

```{r}
iniciar_transparencia_economica() %>% 
    elegir_periodo_anual(periodo = 2023) %>% 
    elegir_quien_gasta(nivel = "E") %>% 
    elegir_donde_se_gasta(departamento_meta = "todos") # <- aquí se usó "todos"
```

Todos los métodos `elegir_*()` cuentan con documentación referente a cómo deben ser usados. Para mayor detalle consultar el método específico. Por ejemplo, `help("elegir_quien_gasta")` o `?elegir_quien_gasta`.

La elección de parámetros no prosperará si se intenta definir más de un parámetro como `"todos"`.

```{r, error=TRUE}
iniciar_transparencia_economica() %>% 
    elegir_periodo_anual(2022) %>% 
    elegir_quien_gasta(nivel = "todos") %>% 
    elegir_donde_se_gasta(departamento_meta = "todos")
```

Todas las funciones de `elegir_*()` tratan de validar que los inputs provistos tengan una forma adecuada. Por ejemplo, `generica` debe seguir la forma `"0-0-0"`, donde cada `0` representa un dígito. Al proveer un input mal formado, la validación provocará un error e indicará una expresión regular o listado de valores apropiados para el parámetro.

```{r, error=TRUE}
iniciar_transparencia_economica() %>% 
    elegir_periodo_anual(2022) %>% 
    elegir_como_se_estructura_gasto(generica = "5-20")
```


### Consultar

Una vez definidos los parámetros de la consulta, solo hace falta ejecutarla. Para ello, usamos la función `consultar()`. Esto nos devolverá la data requerida. 

```{r}
# ¿Cuál fue la ejecución presupuestal por departamento en el gobierno nacional?
# Para el año 2022
iniciar_transparencia_economica() %>% 
    elegir_periodo_anual(2022) %>% 
    elegir_quien_gasta(nivel = "E") %>% 
    elegir_donde_se_gasta(departamento_meta = "todos") %>% 
    consultar()
```

La consulta no prosperará si alguna función de `elegir_*()` (con excepción de `elegir_periodo_anual()`) no cuenta con ningún parámetro como definido como `"todos"`.

```{r, error=TRUE}
iniciar_transparencia_economica() %>% 
    elegir_periodo_anual(2022) %>% 
    elegir_quien_gasta(nivel = "E") %>% 
    elegir_donde_se_gasta(departamento_meta = "01") %>%
    consultar()
```

Se recomienda asignarle nombre a una consulta ejecutada para evitar posibles tediosas re-descargas, especialmente cuando la consulta usa parámetros con vectores más grandes.

```{r}
# ¿Cómo se ejecutó el gasto por genérica para el PP 0031 entre el 2015 y 2021?
mi_consulta <- iniciar_transparencia_economica() %>% 
    elegir_periodo_anual(2015:2021) %>% 
    elegir_en_que_se_gasta(categoria_presupuestal = "0031") %>% 
    elegir_como_se_estructura_gasto(generica = "todos") %>% 
    consultar()

mi_consulta
```

Una vez obtenida la consulta requerida, es posible tratar los datos obtenidos como cualquier otro dataframe en R. Por ejemplo, para calcular el porcentaje de presupuesto destinado a personal y obligaciones sociales por periodo anual.

```{r, warning=FALSE, message=FALSE}
library(dplyr)

mi_consulta %>% 
    group_by(periodo) %>% 
    mutate(porc_presupuesto = (pim/sum(pim)*100) %>% round(1)) %>% 
    ungroup() %>% 
    filter(desc_generica == "PERSONAL Y OBLIGACIONES SOCIALES")
```

También es posible usar los datos obtenidos directamente para un gráfico con `ggplot2`.

```{r, warning=FALSE, message=FALSE}
library(ggplot2)

mi_consulta %>% 
    ggplot(aes(periodo, pim, color = cod_generica)) +
    geom_line() +
    scale_y_continuous(labels = scales::label_dollar(prefix = "S/."))
```















Owner

  • Name: Samuel Calderon
  • Login: calderonsamuel
  • Kind: user
  • Location: Lima

Peruvian political scientist

GitHub Events

Total
  • Watch event: 3
Last Year
  • Watch event: 3

Issues and Pull Requests

Last synced: about 1 year ago

All Time
  • Total issues: 45
  • Total pull requests: 4
  • Average time to close issues: 24 days
  • Average time to close pull requests: about 23 hours
  • Total issue authors: 2
  • Total pull request authors: 1
  • Average comments per issue: 0.49
  • Average comments per pull request: 0.0
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 0.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • calderonsamuel (25)
  • lalgarcia (1)
Pull Request Authors
  • calderonsamuel (2)
Top Labels
Issue Labels
enhancement (7) bug (6) documentation (3)
Pull Request Labels

Dependencies

DESCRIPTION cran
  • R6 * imports
  • cli * imports
  • dplyr * imports
  • glue * imports
  • httr2 * imports
  • janitor * imports
  • purrr * imports
  • readr * imports
  • rlang * imports
  • rvest * imports
  • stats * imports
  • tibble * imports
  • tidyr * imports
  • testthat >= 3.0.0 suggests
.github/workflows/R-CMD-check.yaml actions
  • actions/checkout v2 composite
  • r-lib/actions/check-r-package v2 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/pkgdown.yaml actions
  • JamesIves/github-pages-deploy-action v4.4.1 composite
  • actions/checkout v3 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/test-coverage.yaml actions
  • actions/checkout v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite