Entradas

Librería de REDATAM para R

Imagen
  Introducción. En el segundo año de la pandemia (tomando como referencia que en marzo de 2020 se decidió a nivel mundial el confinamiento masivo), en mayo del 2021, tuvimos una reunión con el equipo de REDATAM , la DAERAS y algunos invitados, los compañeros de la CELADE encabezados por Lenin Aguinaga dejaron una agradable impresión, aunque en el Instituto seguimos ajenos a este software gratuito y muy destacado debido a la velocidad con la que hace las consultas. En los últimos años una gran cantidad de compañeros se han incorporado al Instituto con un perfil matemático, que los hace fuertes candidatos a integrar y migrar sus conocimientos al campo de la ciencia de datos. Junto con nuestros compañeros, y también debido al auge de la profesión más sexi del siglo 21 – el científico de datos - (según el artículo de Davenport y Patil del 2012), el lenguaje de programación R ha empezado a poblar de líneas de código los ordenadores de nuestro Instituto. Es por ello que traer la vel

Mas sobre apply

Imagen
 Una cosa importante es el poder implementar funciones propias usando apply, el investigar diversos caminos puede ser que al final el que creíamos que sería el idóneo, no lo es. Sin embargo el conocimiento queda ahí para futuras soluciones. Vamos ahora a ver como crear nuestras propias funciones y que se ejecuten en un apply . Tenemos el siguiente fragmento del script: library(tidyverse) df <- as.data.frame(read_csv("ruta/2008.csv",n_max = 100000)) df2 <- df[,c("CarrierDelay","WeatherDelay", "NASDelay", "SecurityDelay", "LateAircraftDelay")] df_clean <- df2[complete.cases(df2),] Una nueva función es complete.cases que elimina aquellos registros que tengan valores "ausentes" (missing - NA). > nrow(df_clean) [1] 19627 > 

Recorridos con apply (una perspectiva diferente a los ciclos tradicionales)

Imagen
Siempre tiende uno a buscar símiles entre un lenguaje de programación y otro, y siempre o casi siempre funciona  con aquellos lenguajes que toman como inspiración al lenguaje C , y que para ser honestos viene del antiguo y primitivo mundo de los lenguajes procedimentales (aunque C evolucionó a C++ para participar y ser en gran medida uno de los principales protagonistas del boom de la programación orientada a objetos). Sin embargo, y otra vez siendo honestos, en principio el código de R me parecía escritura del alfabeto chino, había cosas únicas que no había visto en otros lenguajes de programación. Es por eso que escribo el siguiente artículo que tiene que ver con los recorridos que se hacen a estructuras de datos, los llamados ciclos ( for , while , do-while , repeat, do loop , etc,). Ya llevo algunos años con R y me complacía programar soluciones usando ciclos ya que era la forma que me enseñaron desde la preparatoria, sin embargo con ánimo de hacer el código más eficiente di un

Nuevas equivalencias (y diferencias) en los paquetes DBI y dlpyr en R (3)

Imagen
Al igual que cuando leemos un libro y este libro enlaza a otras historias que ante la curiosidad innata de algunos especímenes de la raza humana tienen, pudiera ser que con las TIs pasé lo mismo. Digo lo anterior ya que inicié todos estos artículos debido a que queremos transformar los archivos de texto plano a bases de datos relacionales, sin embargo una de esas fuentes modificó la estructura de los archivos y de ahí nació la idea de obtener un diccionario de datos ( o FD como se le llama coloquialmente) y debido a ese reto van hasta ahora 3 artículos (4 con el presente) que tratan de explicar las características de los paquetes dplyr y de sparklyr . Antes de llegar a la construcción de lo que imagino serán las bases para crear el diccionario de datos seguiré explicando similitudes entre el SQL que todos los informáticos manejamos y el paquete dplyr que la verdad me esta sorprendiendo gratamente y que mis compañeros dominan muy bien. Agrupar en base a un valor cuantitativo discreto

Nuevas equivalencias (y diferencias) en los paquetes DBI y dlpyr en R (2)

Imagen
En este artículo abrimos un paréntesis para seguir haciendo esa analogía entre instrucciones dplyr y SQL ( DBI )  para tener un mejor conocimiento entre ambas sintaxis aunque pareciera que las instrucciones dlpyr se traducen en SQL como lo menciona el libro de " Mastering Spark with R " - " Los datos no son importados a R ; en cambio, dplyr  convierte esta tarea en instrucciones SQL que son enviadas a Spark " y en una sección previa del libro dice " ...si eres competente (proeficiente) en SQL , esta opción es viable para ti ". Sin embargo, reitero es importante que cuando un grupo de trabajo maneja esta sintaxis es bueno como personal y profesional de TI tener los conocimientos necesarios para dar soporte y porque no usar dichos verbos de este paquete. Vamos a regresar nuevamente a los datos abiertos del Instituto Mexicano del Seguro Social (IMSS) para extraer los puestos de trabajo que los patrones registran ante el Instituto correspondientes a julio y

Expresiones regulares en R para revisar columnas de archivos de texto

Imagen
" Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems " (Tomado del libro " Regular Expressions Cookbook ") En relación al artículo anterior una de las razones por las cuales es necesario hacer manipulación de las consultas devueltas por Apache Spark es sin duda la presentación de resultados. En este artículo vamos a presentar una forma de obtener y analizar las columnas de un archivo delimitado por algún carácter (en sus inicios la definición era Comma Separated Values -CSV - sin embargo debido a que la coma pudiera ser parte del contenido de una columna pues ahora se separan por cualquier otro caracter) y un acercamiento a sus tipos de datos. Cómo sería muy azaroso el revisar millones de registros con las herramientas estándar del lenguaje y citando nuevamente a la que pareciera es la biblia de los usuarios de R que utilizan Spark ( Mastering Spark with R ) en la sección 8.2.2 nos muestra un códi

Nuevas equivalencias (y diferencias) en los paquetes DBI y Dplyr en R (1)

Imagen
Parece ser que es complicado el manipular una colección de datos que regresa una consulta realizada usando el paquete dplyr junto con  Apache Spark , al decir complicado, me refiero a que no podemos manipularlo al igual que un dataframe que tiene características muy parecidas a una tabla o colección de otro lenguaje de programación. Me clavé en una investigación que me llevó algunas horas (2 o 3) y aunque todavía no encuentro algo concluyente parece ser que no es posible traer los elementos individuales de dicha colección, pareciera que  es debido al gran tamaño que pueden tener. La siguiente información viene del sitio " RDD Programming Guide - Spark 3.3.0 Documentation " que documenta las acciones que se tienen para manipular estos datasets y según comparándola con otra bibliografía collect() transforma el RDD en un objeto de R para nuestro caso. " collect() - Regresa todos los elementos del dataset  como un arreglo en el controlador (driver) del programa. Esto es