diff --git a/DESCRIPTION b/DESCRIPTION index 534599e..7fa972f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -20,7 +20,8 @@ Imports: magrittr, readr, tidyr, - stringr + stringr, + tibble Suggests: rlang, qpdf, diff --git a/NAMESPACE b/NAMESPACE index a788e88..f0354ec 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,24 +1,21 @@ # Generated by roxygen2: do not edit by hand -<<<<<<< HEAD export(edu_ejemplo_datos_plickers) export(edu_ejemplo_listado_estudiantes) export(edu_extract_curp) export(edu_join_similar) -export(edu_read_plickers) -======= -export(e_unir_semejantes) -export(edu_ejemplo_datos_plickers) -export(edu_ejemplo_listado_estudiantes) export(read_plickers) ->>>>>>> refs/remotes/origin/main import(stringr) importFrom(dplyr,across) importFrom(dplyr,all_of) importFrom(dplyr,bind_cols) importFrom(dplyr,c_across) +importFrom(dplyr,case_match) importFrom(dplyr,cur_column) +importFrom(dplyr,join_by) +importFrom(dplyr,left_join) importFrom(dplyr,mutate) +importFrom(dplyr,pull) importFrom(dplyr,relocate) importFrom(dplyr,rename) importFrom(dplyr,rename_with) @@ -27,13 +24,18 @@ importFrom(dplyr,select) importFrom(dplyr,slice) importFrom(forcats,as_factor) importFrom(janitor,clean_names) +importFrom(lubridate,dmonths) importFrom(lubridate,dmy) +importFrom(lubridate,dyears) +importFrom(lubridate,interval) +importFrom(lubridate,now) importFrom(lubridate,ymd) importFrom(magrittr,"%<>%") importFrom(magrittr,"%>%") importFrom(purrr,as_vector) importFrom(readr,read_csv) importFrom(readr,read_file) +importFrom(tibble,as_tibble) importFrom(tidyr,pivot_longer) importFrom(tidyr,separate_wider_regex) importFrom(tidyr,unnest) diff --git a/R/curp.R b/R/curp.R index 9dc3911..5ccf536 100644 --- a/R/curp.R +++ b/R/curp.R @@ -15,7 +15,9 @@ #' #' @param curp Especifica la curp desde la cual se van a obtener los datos -#' @param dato_a_obtener Especificar el dato a obtener, dentro de las siguientes: fecha_nacimiento, genero, genero_largo, edad_anios, edad_meses, combinacion_el_la, combinacion_l_la, combinacion_al_ala, combinacion_del_dela, combinacion_o_a, combinacion_o_a2 + +#' @param dato_a_obtener Especificar el dato a obtener, dentro de las siguientes: estado_nacimiento, estado_nacimiento_largo, fecha_nacimiento, genero, genero_largo, edad_anios, edad_meses, combinacion_el_la, combinacion_l_la, combinacion_al_ala, combinacion_del_dela, combinacion_o_a, combinacion_o_a2 + #' @param matches_ fecha_calculo_edad. Es un dato opcional y aplica para cuando se requiere cálculos de edades. Si no se especifica, automáticamente realiza el cálculo con relación a la fecha actual de la computadora. Sin embargo hay casos en los que se necesita saber la edad que tenía la persona a la que corresponde la curp, por ejemplo el día primero de septiembre de 2023. En ese caso, se especifica "2023-09-01" #' #' @examplesIf interactive() @@ -71,51 +73,25 @@ edu_extract_curp <- function(curp,dato_a_obtener,fecha_calculo_edad=now()) { estados <- read_csv("~/EduToolsR/data/edu_estados_mx.csv",show_col_types = F) # readr::read_csv(system.file("data", "edu_estados_mx.csv", package = "EduToolsR"),show_col_types = F) - # resultado <- curp %>% - # as_tibble() %>% - # transmute( - # resultado = case_match( - # {{ dato_a_obtener }}, - # "fecha_nacimiento" ~ curp %>% str_sub(5, 10), - # "genero" ~ curp %>% str_sub(11, 11), - # "genero2" ~ case_match(curp %>% str_sub(11, 11), "H" ~ "Hombre", "M" ~ "Mujer"), - # "edad_anios" ~ interval(curp %>% str_sub(5, 10), fecha_calculo_edad) %/% dyears(1) %>% as.character(), - # "edad_meses" ~ interval(curp %>% str_sub(5, 10), fecha_calculo_edad) %/% dmonths(1) %>% as.character(), - # "combinacion_el_la" ~ case_match(curp %>% str_sub(11, 11), "H" ~ "el", "M" ~ "la"), - # "combinacion_l_la" ~ case_match(curp %>% str_sub(11, 11), "H" ~ "l", "M" ~ " la"), - # "combinacion_al_ala" ~ case_match(curp %>% str_sub(11, 11), "H" ~ "al", "M" ~ "a la"), - # "combinacion_del_dela" ~ case_match(curp %>% str_sub(11, 11), "H" ~ "del", "M" ~ "de la"), - # "combinacion_o_a" ~ case_match(curp %>% str_sub(11, 11), "H" ~ "", "M" ~ "a"), - # "combinacion_o_a2" ~ case_match(curp %>% str_sub(11, 11), "H" ~ "o", "M" ~ "a"), - # "estado_nacimiento" ~ curp %>% str_sub(12, 13), - # "estado_nacimiento_largo" ~ left_join(curp %>% str_sub(12, 13) %>% as_tibble(), estados, join_by(value == estado_cod)) %>% pull(estado_nombre) - # ) - # ) %>% - # pull(resultado) - - - - - - resultado <- curp %>% - as_tibble() %>% - mutate( - fecha_nacimiento= curp %>% str_sub(5, 10) %>% ymd, - genero= curp %>% str_sub(11, 11) %>% as_factor(), - genero_largo= case_match(curp %>% str_sub(11, 11), "H" ~ "Hombre", "M" ~ "Mujer") %>% as_factor, - edad_anios= interval(curp %>% str_sub(5, 10), fecha_calculo_edad) %/% dyears(1) , - edad_meses=interval(curp %>% str_sub(5, 10), fecha_calculo_edad) %/% dmonths(1) , - combinacion_el_la= case_match(curp %>% str_sub(11, 11), "H" ~ "el", "M" ~ "la"), - combinacion_l_la= case_match(curp %>% str_sub(11, 11), "H" ~ "l", "M" ~ " la"), - combinacion_al_ala= case_match(curp %>% str_sub(11, 11), "H" ~ "al", "M" ~ "a la"), - combinacion_del_dela= case_match(curp %>% str_sub(11, 11), "H" ~ "del", "M" ~ "de la"), - combinacion_o_a= case_match(curp %>% str_sub(11, 11), "H" ~ "", "M" ~ "a"), - combinacion_o_a2= case_match(curp %>% str_sub(11, 11), "H" ~ "o", "M" ~ "a"), - estado_nacimiento= curp %>% str_sub(12, 13), - estado_nacimiento_largo= left_join(curp %>% str_sub(12, 13) %>% as_tibble(), estados, join_by(value == estado_cod)) %>% pull(estado_nombre) - ) %>% - pull({{dato_a_obtener}}) +resultado <- curp %>% + as_tibble() %>% + mutate( + fecha_nacimiento = curp %>% str_sub(5, 10) %>% ymd(), + genero = curp %>% str_sub(11, 11) %>% as_factor(), + genero_largo = case_match(curp %>% str_sub(11, 11), "H" ~ "Hombre", "M" ~ "Mujer") %>% as_factor(), + edad_anios = interval(curp %>% str_sub(5, 10), fecha_calculo_edad) %/% dyears(1), + edad_meses = interval(curp %>% str_sub(5, 10), fecha_calculo_edad) %/% dmonths(1), + combinacion_el_la = case_match(curp %>% str_sub(11, 11), "H" ~ "el", "M" ~ "la"), + combinacion_l_la = case_match(curp %>% str_sub(11, 11), "H" ~ "l", "M" ~ " la"), + combinacion_al_ala = case_match(curp %>% str_sub(11, 11), "H" ~ "al", "M" ~ "a la"), + combinacion_del_dela = case_match(curp %>% str_sub(11, 11), "H" ~ "del", "M" ~ "de la"), + combinacion_o_a = case_match(curp %>% str_sub(11, 11), "H" ~ "", "M" ~ "a"), + combinacion_o_a2 = case_match(curp %>% str_sub(11, 11), "H" ~ "o", "M" ~ "a"), + estado_nacimiento = curp %>% str_sub(12, 13), + estado_nacimiento_largo = left_join(curp %>% str_sub(12, 13) %>% as_tibble(), estados, join_by(value == estado_cod)) %>% pull(estado_nombre) + ) %>% + dplyr::pull({{ dato_a_obtener }}) return(resultado) diff --git a/R/plickers.R b/R/plickers.R index afb8241..544b1ff 100644 --- a/R/plickers.R +++ b/R/plickers.R @@ -3,6 +3,15 @@ ## usethis namespace: start #' @importFrom dplyr mutate +#' @importFrom dplyr pull +#' @importFrom dplyr left_join +#' @importFrom dplyr case_match +#' @importFrom dplyr join_by +#' @importFrom lubridate interval +#' @importFrom lubridate now +#' @importFrom lubridate dyears +#' @importFrom lubridate dmonths +#' @importFrom tibble as_tibble #' @importFrom readr read_file #' @importFrom lubridate ymd #' @importFrom lubridate dmy @@ -35,10 +44,8 @@ # Datos ejemplo ----------------------------------------------------------- -<<<<<<< HEAD # ejemplo <- system.file("data", "edu_ejemplo_datos_plickers.csv", package = "EduToolsR") -======= ->>>>>>> refs/remotes/origin/main + #' @title Datos de ejemplo desde plickers #' @description @@ -49,23 +56,10 @@ #' @examplesIf interactive() #' data(edu_ejemplo_datos_plickers) #' head(edu_ejemplo_datos_plickers) -<<<<<<< HEAD -#' ejemplo |> edu_read_plickers() -#' edu_read_plickers(ejemplo) -#' -#' @export -edu_ejemplo_datos_plickers <- readr::read_file(system.file("data", "edu_ejemplo_datos_plickers.csv", package = "EduToolsR")) #%>% as.vector()#%>% paste(collapse="\n") -# edu_ejemplo_datos_plickers <- readr::read_file("~/EduToolsR/data/edu_ejemplo_datos_plickers.csv") -======= -#' edu_ejemplo_datos_plickers |> read_plickers() -#' read_plickers(edu_ejemplo_datos_plickers) -#' #' @export edu_ejemplo_datos_plickers <- readr::read_file(system.file("data", "edu_ejemplo_datos_plickers.csv", package = "EduToolsR")) %>% as.vector()#%>% paste(collapse="\n") ->>>>>>> refs/remotes/origin/main - @@ -91,21 +85,10 @@ edu_ejemplo_datos_plickers <- readr::read_file(system.file("data", "edu_ejemplo_ #' @examplesIf interactive() #' # Ejemplos de uso de la función #' edu_ejemplo_datos_plickers |> read_plickers() -<<<<<<< HEAD -#' edu_read_plickers(edu_ejemplo_datos_plickers) -#' -#' @export -#' -#' - -edu_read_plickers <- function(origin=ejemplo, fecha = lubridate::now()) { -======= -#' read_plickers(edu_ejemplo_datos_plickers) -#' #' @export read_plickers <- function(origin, fecha = lubridate::now()) { ->>>>>>> refs/remotes/origin/main + plickers <- readr::read_csv(origin, col_names = F, show_col_types = F) metadatos <- plickers[1, 1] %>% diff --git a/R/tidy_data.R b/R/tidy_data.R index 540248b..23e86b5 100644 --- a/R/tidy_data.R +++ b/R/tidy_data.R @@ -53,7 +53,7 @@ edu_ejemplo_listado_estudiantes <- readr::read_csv(system.file("data", "edu_ejem #' #' # Esta es la tibble a la cual se renombraron las columnas nombre_completo, nombre y nombres como una sola: alumno #' -<<<<<<< HEAD + #' edu_join_similar(e_ejemplo_estudiantes,"alumno","nombre_completo|nombre|nombres") #' #' edu_ejemplo_listado_estudiantes |> edu_join_similar("alumno","nombre_completo|nombre|nombres") @@ -61,15 +61,7 @@ edu_ejemplo_listado_estudiantes <- readr::read_csv(system.file("data", "edu_ejem #' @export edu_join_similar <- function(tibble_procesar,nombre,matches_){ -======= -#' edu_unir_semejantes(e_ejemplo_estudiantes,"alumno","nombre_completo|nombre|nombres") -#' -#' edu_ejemplo_listado_estudiantes |> e_unir_semejantes("alumno","nombre_completo|nombre|nombres") -#' -#' @export -e_unir_semejantes <- function(tibble_procesar,nombre,matches_){ ->>>>>>> refs/remotes/origin/main tibble_procesar %>% #select() %>% rowwise() %>% mutate( {{nombre}} := paste(na.omit(dplyr::c_across(matches(matches_))), collapse = " ")) %>% diff --git a/README.md b/README.md index 7f64993..8f2a030 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # EduToolsR +<<<<<<< HEAD +======= + +>>>>>>> dev Este repositorio proporciona herramientas útiles que abonan a la construcción de marcos descriptivos como parte del paradigma socioformativo de formación, en donde se integran gradualmente diversas herramientas que favorecen el conocimiento del contexto escolar y comunitario de los estudiantes con los que se trabaja, así como la evaluación formativa como herramienta fundamental que pueden utilizar docentes y educadores en general. Proporciona además herramientas que facilitan las tareas administrativas de los docentes, siendo hasta el momento la obtención de información a través de la Clave Unica de Registro de Población (CURP) de México, así como las cédulas en PDF que otorgan las autoridades mexicanas y que sirven como identificador para los estudiantes. @@ -17,10 +21,15 @@ Considerando que es perfectamente normal y esperable que la evaluación provenga ### Transformación de Datos desde Plickers El objetivo principal de esta función es facilitar la evaluación formativa que los docentes realizan al transformar la información en formato csv, exportada desde desde Plickers, -un servicio ampliamente utilizado para realizar evaluaciones y sondeos en el aula mediante códigos QR y el celular del docente-. La función `edu_read_plickers` incluida en este repositorio permite convertir los datos en formato CSV generados por Plickers a una estructura ordenada, siguiendo la filosofía tidy y facilitando así su análisis y visualización. +<<<<<<< HEAD ## Procesamiento de CURP +======= + +## Procesamiento de CURP +>>>>>>> dev Dentro de este repositorio, encontrarás funciones especializadas para el procesamiento de la Clave Única de Registro de Población (CURP), ofreciendo diversas utilidades: diff --git a/man/e_unir_semejantes.Rd b/man/e_unir_semejantes.Rd deleted file mode 100644 index 7bcf33b..0000000 --- a/man/e_unir_semejantes.Rd +++ /dev/null @@ -1,43 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/tidy_data.R -\name{e_unir_semejantes} -\alias{e_unir_semejantes} -\title{Fusionar columnas con datos afines entre si} -\usage{ -e_unir_semejantes(tibble_procesar, nombre, matches_) -} -\arguments{ -\item{tibble_procesar}{especifica la tibble en donde se encuentran las columnas que se desea unir} - -\item{nombre}{especifica el nombre con el que se desee dejar las coumnas que serán unidas} - -\item{matches_}{especifica los nombres de las columnas que desean ser unidas, separadas por un signo |} -} -\description{ -Función que ofrece facilidades para unir datos comunes que provienen de distintas fuentes de datos -para que resulten tibbles con columnas unificadas. - -Cuando se reunen datos por ejemplo de distintas hojas de excel, archivos csv, o algún otro, -puede suceder que en un origen la columna de nombre venga #' como 'nombre_alumno', en otra como 'alumno' -y en otra como 'alumnos'. Esta función ofrece facilidades para unificar bajo un mismo nombre. -} -\section{Datos en formato tidy}{ - -Funciones para reorganizar los datos. -} - -\examples{ -\dontshow{if (interactive()) (if (getRversion() >= "3.4") withAutoprint else force)(\{ # examplesIf} - -# Esta es la tibble original - -edu_ejemplo_listado_estudiantes - -# Esta es la tibble a la cual se renombraron las columnas nombre_completo, nombre y nombres como una sola: alumno - -edu_unir_semejantes(e_ejemplo_estudiantes,"alumno","nombre_completo|nombre|nombres") - -edu_ejemplo_listado_estudiantes |> e_unir_semejantes("alumno","nombre_completo|nombre|nombres") -\dontshow{\}) # examplesIf} -} -\concept{pruebas} diff --git a/man/edu_ejemplo_datos_plickers.Rd b/man/edu_ejemplo_datos_plickers.Rd index ad40888..f4ca81d 100644 --- a/man/edu_ejemplo_datos_plickers.Rd +++ b/man/edu_ejemplo_datos_plickers.Rd @@ -20,13 +20,6 @@ Conjunto de datos de ejemplo \dontshow{if (interactive()) (if (getRversion() >= "3.4") withAutoprint else force)(\{ # examplesIf} data(edu_ejemplo_datos_plickers) head(edu_ejemplo_datos_plickers) -<<<<<<< HEAD -ejemplo |> edu_read_plickers() -edu_read_plickers(ejemplo) -======= -edu_ejemplo_datos_plickers |> read_plickers() -read_plickers(edu_ejemplo_datos_plickers) ->>>>>>> refs/remotes/origin/main \dontshow{\}) # examplesIf} } \keyword{datasets} diff --git a/man/edu_extract_curp.Rd b/man/edu_extract_curp.Rd index 8883a39..928f302 100644 --- a/man/edu_extract_curp.Rd +++ b/man/edu_extract_curp.Rd @@ -9,7 +9,7 @@ edu_extract_curp(curp, dato_a_obtener, fecha_calculo_edad = now()) \arguments{ \item{curp}{Especifica la curp desde la cual se van a obtener los datos} -\item{dato_a_obtener}{Especificar el dato a obtener, dentro de las siguientes: fecha_nacimiento, genero, genero_largo, edad_anios, edad_meses, combinacion_el_la, combinacion_l_la, combinacion_al_ala, combinacion_del_dela, combinacion_o_a, combinacion_o_a2} +\item{dato_a_obtener}{Especificar el dato a obtener, dentro de las siguientes: estado_nacimiento, estado_nacimiento_largo, fecha_nacimiento, genero, genero_largo, edad_anios, edad_meses, combinacion_el_la, combinacion_l_la, combinacion_al_ala, combinacion_del_dela, combinacion_o_a, combinacion_o_a2} \item{matches_}{fecha_calculo_edad. Es un dato opcional y aplica para cuando se requiere cálculos de edades. Si no se especifica, automáticamente realiza el cálculo con relación a la fecha actual de la computadora. Sin embargo hay casos en los que se necesita saber la edad que tenía la persona a la que corresponde la curp, por ejemplo el día primero de septiembre de 2023. En ese caso, se especifica "2023-09-01"} } diff --git a/man/edu_read_plickers.Rd b/man/read_plickers.Rd similarity index 84% rename from man/edu_read_plickers.Rd rename to man/read_plickers.Rd index 8b7f2f3..7d92c39 100644 --- a/man/edu_read_plickers.Rd +++ b/man/read_plickers.Rd @@ -1,7 +1,7 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/plickers.R -\name{edu_read_plickers} -\alias{edu_read_plickers} +\name{read_plickers} +\alias{read_plickers} \title{Convierte la información exportada desde Plickers a un formato tidy} \usage{ read_plickers(origin, fecha="2023-01-01") @@ -29,10 +29,5 @@ Funciones para transformar datos provenientes de varios servicios de evaluación \dontshow{if (interactive()) (if (getRversion() >= "3.4") withAutoprint else force)(\{ # examplesIf} # Ejemplos de uso de la función edu_ejemplo_datos_plickers |> read_plickers() -<<<<<<< HEAD:man/edu_read_plickers.Rd -edu_read_plickers(edu_ejemplo_datos_plickers) -======= -read_plickers(edu_ejemplo_datos_plickers) ->>>>>>> refs/remotes/origin/main:man/read_plickers.Rd \dontshow{\}) # examplesIf} }