Valores en blanco

Este artículo se ha traducido del inglés mediante IA y puede contener errores. Sus comentarios nos ayudarán a mejorar.

Los datos faltantes, en blanco o no aplicables son una consideración importante para cualquier sistema de gestión de datos. Este artículo describe en detalle cómo ActivityInfo aborda la "ausencia de datos" y cómo se compara con otros sistemas y lenguajes de programación.

Introducción

ActivityInfo, como muchos sistemas de gestión de datos, trabaja exclusivamente con valores "tipificados". Todos los campos y expresiones de fórmula en ActivityInfo tienen un tipo que determina el rango de valores permitidos. Un campo de cantidad nunca puede tener el valor "Bob", y un campo de fecha nunca tendrá el valor 42. Lo mismo ocurre con un vector en R, una columna en una base de datos relacional o una variable de SPSS.

Sin embargo, puede haber muchas razones por las que un valor esté ausente:

  • Un campo puede no ser relevante para cada registro o fila. Por ejemplo, podría darse el caso de que solo los refugiados tengan un número de registro del ACNUR.
  • Un campo puede no ser obligatorio. No todos los encuestados de un cuestionario pueden tener un número de teléfono móvil.
  • Un campo puede añadirse después del inicio de la recopilación de datos, y no tenemos información sobre los sujetos recopilados previamente.
  • Un encuestado puede negarse a responder preguntas específicas, o puede no saber la respuesta.
  • Puede haber un error al calcular un valor, por ejemplo, si divide un número por cero o proporciona una expresión regular no válida a REGEXMATCH.

Por estas razones, cada tipo de fórmula de ActivityInfo incluye un valor especial "en blanco". Una expresión numérica, por ejemplo, puede ser igual a cualquier número real, o puede estar en blanco. Una expresión de fecha puede ser igual a cualquier fecha entre el 1000 d.C. y el 9999 d.C., o puede estar en blanco.

Cálculos que involucran valores en blanco

En las fórmulas de ActivityInfo, puede comprobar si hay valores en blanco utilizando ISBLANK. Pero los valores en blanco también pueden aparecer en los cálculos. Por ejemplo, podría tener un formulario con dos campos de cantidad para el recuento de COUNT_WOMEN y COUNT_MEN , así como un campo calculado TOTAL con la fórmula COUNT_WOMEN + COUNT_MEN.

¿Qué sucede si algunos registros contienen valores en blanco para WOMEN, MEN o ambos? Esta es una elección de diseño: en Excel, las celdas en blanco se tratan como ceros en el contexto de la aritmética. En SQL, sin embargo, NULL más cualquier otro número es NULL, y en R, NA más cualquier número sigue siendo NA.

ActivityInfo sigue la convención de Excel en la mayoría de los casos, lo que consideramos más indulgente para los usuarios no técnicos. Así que para el ejemplo anterior, los resultados podrían ser así:

Centro de salud WOMEN MEN WOMEN + MEN ISBLANK(WOMEN + MEN)
A 300 150 450 FALSE
B 160 160 FALSE
C 75 75 FALSE
D TRUE
E 220 90 310 FALSE

Como puede ver en la tabla anterior, el campo calculado TOTAL solo está en blanco cuando tanto WOMEN como MEN están en blanco.

Cadenas de texto vacías

En algunos lenguajes de programación, hay una diferencia entre una cadena de texto vacía ("") y un valor NULL o faltante. Por ejemplo, en SQL, "" IS NULL es falso, y en R, is.na("") también es falso.

Esta distinción a menudo puede confundir a los usuarios sin experiencia en programación, por lo que ActivityInfo evita esta distinción: una cadena de texto vacía "" es idéntica a un valor de texto en blanco:

ISBLANK("") == TRUE

Durante la recopilación de datos, cualquier entrada en un campo de texto será despojada de los espacios iniciales y finales. Esto significa que si escribe solo espacios en un campo de texto, el valor del campo estará en blanco:

Captura de pantalla de un formulario de entrada de datos con un cálculo
Captura de pantalla de un formulario de entrada de datos con un cálculo

Pruébelo usted mismo

Los espacios iniciales y finales no se eliminan de los valores en las fórmulas, lo que significa que el texto que solo contiene espacios en blanco no se considera en blanco:

ISBLANK("  ") == FALSE
Siguiente elemento
SUMMARIZE