Saltar al contenido

Validación de datos usando aserciones en R

El ejemplo que figura a continuación demuestra la importancia de las afirmaciones, en el que se resume la edad media de los solicitantes agrupados por su estado de aprobación. La primera línea del código que figura a continuación convierte la variable approval_status en un factor, mientras que la segunda línea realiza el cálculo requerido.

12345dat$approval_status = as.factor(dat$approval_status)dat %§;% group_by(approval_status) %§;% summarise(avg_age=mean(Age))

{r}

Validación de datos usando aserciones en R
Validación de datos usando aserciones en R

Salida:

12345approval_status avg_age<fctr;;dbl;0 47.40000 1 48.61463

No parece haber nada malo en la salida anterior, pero veamos la función de resumen para la variable de la edad.

1sumario(dat$Age)

{r}

Salida:

12 Min. 1er Qu. Media de la media 3er Qu. Max. -10.00 36.00 50.00 48.23 61.00 76.00

De la salida anterior, podemos ver que algunas de las edades de los solicitantes son negativas, lo cual no es posible. Estos datos son incorrectos, pero este error no fue detectado en el código anterior donde realizamos la operación de grupo por grupo. Aquí es donde la función verify() de Assertr puede ser usada para asegurar que tales errores no queden sin identificar.

La función de verificación toma un marco de datos (dat) y una expresión lógica (Age>= 0). Luego, evalúa esa expresión para los datos proporcionados. Si no se cumple la condición de la expresión, la función «verify» emite una alerta de error y termina el procesamiento posterior de la tubería de código. En este ejemplo, las siguientes líneas de código realizarán esta tarea.

1234dat % verifica(Age >= 0) % % grupo_por(estado_de_aprobación) %;% resume(avg_age=media(Age))

{r}

Salida:

123456789101112131415 ¡verificación [Edad]= 0] fallida! (10 fallas) verbo redux_fn columna predicada valor índice1 verificar NA Age >= 0 NA 1 NA2 verificar NA Age >= 0 NA 2 NA3 verificar NA Age >= 0 NA 3 NA4 verificar NA Age >= 0 NA 4 NA5 verificar NA Age = 0 NA 193 NA6 verificar NA Age >= 0 NA 194 NA7 verificar NA Age >= 0 NA 195 NA8 verificar NA Age;= 0 NA 199 NA9 verificar NA Age;= 0 NA 209 NA10 verificar NA Age;= 0 NA 600 NAError: assertr detuvo la ejecución

El resultado muestra diez casos en los que la edad toma valores negativos, resaltados por el índice. Por último, el mensaje de error Error: assertr stopped execution muestra que la ejecución se detuvo, por lo que no se mostró la salida deseada.

La misma tarea puede realizarse usando la función assertr$0027s assert(). En el siguiente código, la función assert() toma los datos, dat, y aplica una función de predicado, within_bounds(0,Inf). Hemos establecido que el rango sólo incluya valores positivos, pero esto puede ser alterado según sea necesario. El siguiente paso es aplicar la función predicada a la columna de interés, Age. El código que se muestra a continuación eleva la alerta de error cuando la condición no se cumple.

1234dat %§;% assert(within_bounds(0,Inf), Age) %§;% group_by(approval_status) %§;% summarise(avg_age=mean(Age))

{r}

Salida:

1234567891011Columna $0027Edad$0027 viola la afirmación $0027within_bounds(0, Inf)$0027 10 veces el verbo redux_fn predicar columna índice valor1 afirmar NA within_bounds(0, Inf) Edad 1 -22 afirmar NA within_bounds(0, Inf) Edad 2 -33 afirmar NA within_bounds(0, Inf) Edad 3 -44 afirmar NA within_bounds(0, Inf) Edad 4 -55 afirmar NA within_bounds(0, Inf) Edad 193 -5 [omitido 5 filas]Error: assertr stopped execution

La primera línea de la salida, la columna «Edad» viola la afirmación «within_bounds(0, Inf)» 10 veces, indica que hay diez filas con valores de edad negativos.