Ingesta de archivos de datos tabulares

Formatos de archivo compatibles

La ingesta de datos tabulares admite los siguientes formatos de archivo:

Formato de archivoVersiones compatibles
SPSS (formatos POR y SAV)7 a 22
Stata4 a 13
Rhasta 3
ExcelSolo XLSX (XLS NO es compatible)
CSV (valores separados por comas)(compatibilidad limitada)

Consulte los apartados de esta sección para obtener más información sobre cada uno de los formatos compatibles.

Datos tabulares, representación, almacenamiento e ingesta

Este apartado explica los conceptos básicos sobre cómo manejar datos tabulares en la aplicación Dataverse y qué sucede durante el proceso de ingesta cuando los archivos cargados por el usuario se procesan y convierten al formato de archivo de Dataverse.

¿Qué sucede durante la “ingesta”?

El objetivo del proceso de ingesta es extraer el contenido de datos de los archivos del usuario y guardarlo en un formato neutro y de fácil lectura para la aplicación.

¿Qué significa esto? Las aplicaciones comerciales como SPSS y Stata utilizan sus propios formatos patentados para codificar archivos. Algunas empresas, como Stata, publican las especificaciones de sus formatos (¡Gracias, Stata! ¡Lo valoramos mucho!). Otras, como SPSS, no lo hacen (¡SPSS, desde el proyecto Dataverse expresamos nuestra desaprobación!). De cualquier manera, para leer estos archivos con formato especial se requieren conocimientos adicionales o un software específico. Por esto, no son formatos ideales para la conservación de archivos. Dataverse almacena el contenido de datos sin procesar extraído de estos archivos, en archivos de texto sin formato y delimitados por tabuladores. La información de metadatos que describe este contenido se almacena por separado en una base de datos relacional, de modo que la aplicación pueda acceder a ella de forma eficiente. Para los fines de conservación de archivos, se puede exportar la información de metadatos en archivos XML de texto sin formato, utilizando el formato abierto y estandarizado DDI Codebook.  

Datos tabulares y metadatos

Datos vs. Metadatos

Un ejemplo simple es una columna de datos numéricos en un archivo Stata que contiene ceros y unos. Estos valores numéricos se extraen y almacenan en un archivo delimitado por tabuladores. Si usted no sabe qué representan estos valores, los unos y ceros dejan de ser datos significativos. Lo que hace el archivo Stata es incluir información adicional que describe este vector de datos. Por ejemplo, representa los valores de observación de una variable con el nombre “partido”; con una etiqueta descriptiva “Afiliación a un partido”; y etiquetas categoriales para los 2 valores numéricos (“Demócrata” para 0 y “Republicano” para 1). Esta información adicional, que agrega valor a los datos, son los metadatos.

Metadatos tabulares en Dataverse

La estructura de los metadatos que definen las variables de datos tabulares utilizadas por Dataverse se basó originalmente en el formato DDI Codebook

Puede visualizar un ejemplo de DDI en el apartado “Data Variable Metadata Access” (Acceso a metadatos de variables de datos) de la sección Data Access API (API de acceso a datos) en la Guía de API.

SPSS

Archivos de datos SPSS (formatos POR y SAV).

Versiones compatibles

Dataverse admite la lectura de las versiones 7 a 22 de SPSS. Recomendamos consultar el apartado “Limitaciones” a continuación.

Limitaciones

SPSS no publica abiertamente las especificaciones de sus formatos de archivo patentados. Nuestra capacidad para leer y analizar sus archivos se basa en cierta documentación en línea proveniente de fuentes no oficiales y en la ingeniería inversa. Es por eso que, desafortunadamente, no podemos garantizar el procesamiento de cualquier archivo SPSS cargado por el usuario.

Sin embargo, durante varios años nos hemos dedicado a mejorar este proceso y se encuentra consolidado en la versión actual de Dataverse. Por lo tanto, las posibilidades de éxito (al subir un archivo SPSS y convertirlo en una tabla de datos tabulares completamente funcional en Dataverse) deberían ser razonablemente altas.

Si tiene problemas con un archivo SPSS, comuníquese con nuestro soporte y analizaremos si es algo que podamos resolver mejorando nuestro controlador de ingesta de SPSS.

Tarjetas de control SPSS – no compatible

En el pasado, han habido intentos de compatibilidad con “tarjetas de control” de SPSS (además de archivos .SAV y .POR), tanto en el primer software VDC como en algunas versiones de DVN.

Una “tarjeta de control” es un archivo de texto sin formato con un conjunto de comandos SPSS que describen los datos sin procesar (proporcionados en un archivo separado, de columnas de ancho fijo o de valores separados por comas). Por diversas razones, nunca tuvo mucho éxito. No había la suficiente demanda para esta función de ingesta, por lo que se eliminó de Dataverse 4.0.

Comuníquese con nosotros si tiene alguna pregunta o inquietud sobre el tema, o si tiene grandes cantidades de datos disponibles exclusivamente en este formato que le gustaría ingerir en Dataverse.

Compatibilidad con codificaciones de idiomas en SPSS

Históricamente, no ha habido soporte para especificar un idioma/codificación de página de códigos para los datos almacenados en un archivo SPSS. Es decir, se podían ingresar y almacenar valores de texto en codificaciones no ASCII o caracteres no latinos, pero no existía una configuración para especificar de manera inequívoca de qué idioma o conjunto de caracteres se trataba. De forma predeterminada, Dataverse intentará interpretar los caracteres binarios como UTF8. Si esto no funciona, por ejemplo, si las etiquetas descriptivas y/o los valores categoriales se ingieren como basura, y sabe qué codificación fue utilizada en el archivo original, ahora puede especificarlo en las “Opciones de ingesta”.

Por ejemplo, si sabe que el texto de su archivo SAV está en mandarín y fue codificado en GB2312, puede especificarlo de la siguiente manera: suba su archivo, mediante la pestaña Editar archivos de la página del dataset. Una vez que el archivo se reconoce como SPSS/save, y antes de hacer clic en “Guardar”, vaya a “Opciones de ingesta avanzadas” y seleccione “Simplified Chinese, GB2312” (Chino simplificado, GB2312) del menú anidado en “Codificación de idioma” -> “Asia oriental”.

Stata

De todos los proveedores externos de software estadístico, Stata hace el mejor trabajo de documentación del formato interno de sus archivos. Además, pone esta documentación a disposición de los desarrolladores de forma gratuita y sencilla (¡SPSS, te estamos mirando!). Por eso, Stata es el mejor formato compatible para la ingesta de datos tabulares.

Nuevo en Dataverse 4.0: se ha añadido soporte para Stata v.13.

Formato RData

Se ha introducido soporte para archivos R (.RData) en DVN 3.5.

Información general

R se ha vuelto cada vez más popular en la comunidad académica y de investigadores debido a que es gratuito y de código abierto (a diferencia de SPSS y STATA). Como consecuencia, hay una cantidad cada vez mayor de datos disponibles exclusivamente en formato R.

Requisitos de formateo de datos

Los datos deben formatearse como marco de datos R (data.frame()). Si un archivo .RData contiene múltiples marcos de datos, solo el primero será ingerido. Esto podría cambiar en el futuro.

Tipos de datos en comparación con otros formatos compatibles (Stata, SPSS)

Enteros, dobles, cadenas de caracteres

El manejo de estos tipos es intuitivo y sencillo. Las columnas del archivos delimitado por tabuladores, las estadísticas resumidas y las firmas UNF resultantes serán idénticas a las producidas al ingerir los mismos vectores de SPSS y Stata.

Características exclusivas de R:

R admite explícitamente valores faltantes para todos los tipos anteriores; los Valores Faltantes codificados en vectores R serán reconocidos y conservados en archivos delimitados por tabuladores, y contabilizados en las estadísticas de resumen generadas y en el análisis de datos. Tenga en cuenta que la notación de Dataverse para un valor faltante, tal como se almacena en un archivo delimitados por tabuladores, es una cadena vacía, y no “NA” como en R.

Además de los Valores Faltantes, R reconoce “Not a Value” (NaN) (no es un valor) y el infinito positivo y negativo para las variables de coma flotante, que ahora son compatibles con Dataverse.

También, y a diferencia de Stata, Dataverse reconoce los valores “flotantes” y “dobles” como tipos de datos distintos; todos los valores en punto flotante en R son de hecho dobles.

Factores en R

Estos se ingieren como valores categoriales en Dataverse.

Una cuestión a tener en cuenta: tanto en Stata como en SPSS, el valor real de una variable categorial puede ser tanto numérico como expresado en caracteres. En R, todos los valores de los factores son cadenas, incluso si son representaciones numéricas en cadena. Por lo tanto, los valores de los categoriales resultantes en Dataverse siempre serán de tipo cadena.

Otra cuestión a tener en cuenta es que en R los factores no tienen soporte incorporado para etiquetas descriptivas como las utilizadas por SPSS o STATA. De hecho, esto podría ser confuso ya que, en el lenguaje de R, también se utiliza la palabra “etiqueta”. Sin embargo, en el caso de un factor en R, se refiere a la “carga útil” (payload) o al contenido de datos del valor. Por ejemplo, si crea un factor con las etiquetas “demócrata”, “republicano” eindeciso”, estas cadenas se convierten en los valores reales del vector resultante. Una vez ingeridos en Dataverse, estos valores se almacenarán en el archivo delimitado por tabuladores. El objeto Dataverse DataVariable (Variable de datos de Dataverse) que representa el vector será de tipo “Caracter” y tendrá 3 objetos VariableCategory (Categoría variable) con las etiquetas demócrata, etc. tanto para CategoryValue (Valor de categoría) como para CategoryLabel (Etiqueta de categoría). En próximas versiones de Dataverse, planeamos habilitar una opción para editar la etiqueta de categoría como una nota de texto descriptiva y legible. Para manejar correctamente los vectores R que son factores ordenados, Dataverse (a partir de DVN 3.6) apoya el concepto de categorial ordenado: un valor categorial donde se asigna un orden explícito a la lista de etiquetas de valores.

Operadores booleanos

R admite operadores booleanos (lógicos).

Limitaciones de R en comparación con SPSS y STATA

Lo más notorio en este sentido es que R carece de un mecanismo estándar para definir etiquetas descriptivas para las variables del marco de datos. En Dataverse, de manera similar a Stata y SPSS, las variables tienen nombres y etiquetas distintivos; estas últimas reservadas para textos descriptivos más largos. Con las variables ingeridas de los marcos de datos de R, el nombre de la variable se utilizará tanto para el “nombre” como para la “etiqueta”.

Existen paquetes opcionales de R que proporcionan etiquetas de variables descriptivas; en versiones futuras puede que se incorpore soporte para tal mecanismo. Por supuesto, funcionará solo para archivos R creados con dichos paquetes opcionales.

De manera similar, los valores categoriales (factores) en R también carecen de etiquetas descriptivas.

Nota: esto puede resultar confuso, ya que los factores en R tienen “etiquetas”. Es una cuestión de terminología: la etiqueta de un factor en R es de hecho lo mismo que el “valor” de una variable categorial en SPSS, Stata y Dataverse: contiene datos significativos para la observación. No es un campo reservado para texto explicativo y legible, como en el caso de la “etiqueta” en SPSS o Stata.

La ingesta de un factor de R con las etiquetas de nivel “MASCULINO” y “FEMENINO” producirá una variable categorial con “MASCULINO” y “FEMENINO”, tanto en los valores como en las etiquetas.

Valores de tiempo en R

Este tema merece una sección propia, debido a algunas formas únicas en las R trata los valores de tiempo.

R hace un esfuerzo por tratar el valor de tiempo como un instante en tiempo real. En esto se contrasta con SPSS o Stata, donde se permiten representaciones de valores de tiempo como “23-Sep-2013 14:57:21”. Tenga en cuenta que en ausencia de una zona horaria definida explícitamente, este valor no se puede asignar a un punto exacto en tiempo real. R maneja los tiempos al estilo “Unix”: el valor se convierte a Greenwich (GMT o UTC) “seconds-since-the-Epoch” y el valor numérico resultante se almacena en el archivo de datos. Los ajustes de zona horaria se realizan en tiempo real según sea necesario.

Esto todavía resulta ambiguo y confuso cuando R muestra el valor de tiempo: a menos que la zona horaria se haya definido explícitamente, R ajustará el valor a la zona horaria actual. El comportamiento resultante suele ser contraintuitivo. Si crea un valor de tiempo, por ejemplo:

timevalue<-as.POSIXct("03/19/2013 12:57:00", format = "%m/%d/%Y %H:%M:%OS");

En una computadora configurada para la zona horaria de San Francisco, el valor se mostrará de manera diferente en computadoras en diferentes zonas horarias; por ejemplo, como “12:57 PST” si se está en la costa oeste de los Estados Unidos, pero como “15:57 EST” si se está en Boston (costa este).

Si fuera importante que los valores se mostrarán siempre de la misma manera, independientemente de la zona horaria actual, se recomienda definir la zona horaria de forma explícita. Por ejemplo:

attr(timevalue,"tzone")<-"PST"

o

timevalue<-as.POSIXct("03/19/2013 12:57:00", format = "%m/%d/%Y %H:%M:%OS", tz="PST");

De esta forma, el valor siempre se mostrará como “15:57 PST”, independientemente de la zona horaria actual del sistema operativo; pero sólo si el sistema operativo donde está instalado R realmente entiende la zona horaria “PST”, lo cual no está garantizado. De lo contrario, ajustará silenciosamente el valor GMT almacenado a la zona horaria actual, pero seguirá mostrando con la etiqueta “PST” adjunta.

** Para explicarlo en otras palabras: R hace un trabajo bastante decente almacenando valores de tiempo sin ambiguedades y de manera independiente a la plataforma, pero no da garantías de que los valores se mostrarán de manera predecible o intuitiva.

En términos prácticos, se recomienda utilizar las formas largas/descriptivas de las zonas horarias, ya que es más probable que la mayoría de las computadoras las reconozcan correctamente. Por ejemplo, “Japón” en lugar de “JST”. Otra solución posible es utilizar explícitamente GMT o UTC (ya que es muy probable que estos sean reconocidos correctamente por cualquier sistema), o la notación “UTC +<OFFSET>”. Aún así, nada de lo anterior garantiza un tratamiento adecuado y libre de ambiguedades de los valores de tiempo correspondientes a los conjuntos de datos en R. El hecho de que R modifique silenciosamente los valores de tiempo cuando no reconoce el atributo de zona horaria, y que de todas formas mantenga la etiqueta anterior junto el valor de tiempo modificado, dificulta la cuestión. Estos problemas se discuten en profundidad en foros relacionados con R, y no se pretende tratarlos en profundidad aquí, sino solo advertir que se trata de una cuetión potencialmente compleja.

Otra cuestión importante a tener en cuenta, en relación con la ingesta de archivos R en Dataverse, es que se rechazarán los archivos de datos R con valores de tiempo que tengan zonas horarias no reconocidas por Dataverse. Esto ocurre para evitar (algunos) de los problemas potenciales descritos anteriormente.

También, se recomienda revisar todos los vectores que contengan valores de tiempo ingeridos en Dataverse y comparar las entradas resultantes en los archivos delimitados por tabuladores con los valores originales en el marco de datos en R, para asegurarse de que la ingesta se haya producido como se esperaba.

Otro problema potencial aquí es el UNF. Por la forma en que funciona el algoritmo UNF, los mismos valores de fecha/hora con y sin zona horaria (por ejemplo, “12:45” frente a “12:45 EST”) producen diferentes UNF. Hay que tener en cuenta que los valores de tiempo en Stata y SPSS no tienen zona horaria, mientras que todos los valores de tiempo en R sí la tienen (absolutamente todos; si la zona horaria no se definió explícitamente, se convierte a un valor de tiempo en la zona horaria “UTC”). Esto significa que es imposible tener 2 vectores de valor de tiempo en Stata/SPSS y R que produzcan el mismo UNF.

Sugerencia: si fuera importante para producir versiones del mismo dataset en SPSS/Stata y R que den como resultado el mismo UNF al momento de la ingesta, puede definir las variables de tiempo como cadenas en el marco de datos de R y usar la notación de formato “AAAA-MM-DD HH: mm:ss”. Este es el formato utilizado por el algoritmo UNF para normalizar los valores de tiempo, por lo que la acción anterior resultará en el mismo UNF que el vector de los mismos valores de tiempo en Stata.

Nota: los valores de fecha (solo fecha, sin hora) se manejan exactamente de la misma manera que en SPSS y Stata, por lo que deberían producir los mismos UNF.

Excel

Archivos de Excel (Nueva característica en Dataverse 4.0)

Nota: solo se admiten los “nuevos” archivos de Excel: XLSX. No esta pevisto añadir soporte para los antiguos archivos binarios XLS.

CSV/TSV

Ingesta de archivos de valores separados por comas y valores separados por tabuladores como datos tabulares

Dataverse intentará convertir los archivos CSV y TSV cargados por el usuario en datos tabulares, utilizando el analizador Apache CSV.

Principales requisitos de formato

La primera fila del documento se tomará como el encabezado del CSV, que contiene los nombres de las variables para cada columna.

Cada fila debajo debe contener la misma cantidad de valores separados por comas (“celdas”) que dicho encabezado.

A partir de la versión Dataverse 4.8, permitimos la ingesta de archivos CSV con comas y saltos de línea dentro de las celdas. Una cadena con cualquier cantidad de comas y saltos de línea entre comillas se reconoce como una sola celda. Las comillas se pueden codificar como dos comillas seguidas (“”).

Por ejemplo:

a,b,”c,d
efgh””ijk””l”,m,n

se reconocen como una sola fila con 5 valores (celdas) separados por comas:

a
b
c,d\nefgh”ijk”l
m
n

 (donde \n es un caracter de nueva línea)

Limitaciones

En comparación con otros formatos, se puede extraer relativamente poca información (“metadatos a nivel de variable”) de un archivo CSV. Aparte de los nombres de las variables proporcionados en la línea superior, durante la ingesta se hace una suposición fundada del tipo de datos de cada columna separada por comas. Deberá utilizar uno de los formatos admitidos para archivos enriquecidos (Stata, SPSS y R) si necesita metadatos a nivel de variable más descriptivos, etiquetas de variable, etiquetas y valores categoriales, tipos de datos definidos explícitamente, etc.

Formatos y tipos de datos reconocidos

La aplicación intentará reconocer valores numéricos, en cadena y de fecha/hora en cada columna individual.

  • Para las fechas, se reconoce el formato aaaa-MM-dd.
  • Para los valores de fecha y hora, se reconocen dos formatos:
    • aaaa-MM-dd HH:mm:ss
    • aaaa-MM-dd HH:mm:ss z (mismo que el anterior, con especificación de la zona horaria)
  • Para las variables numéricas, se reconocen los siguientes valores especiales:
    • inf, +inf – como un valor especial “infinito positivo” IEEE 754;
    • NaN – como un valor especial “no es un número” IEEE 754;
  • Un valor vacío (es decir, una coma seguida inmediatamente por otra coma, o el final de la línea), o NA – como valor faltante.
  • null: como un cero numérico.

(Las notaciones anteriores admiten cualquier combinación de mayúsculas y minúsculas).

  • En las cadenas de caracteres, un valor vacío (una coma seguida de otra coma o el final de la línea) se trata como una cadena vacía (NO como un valor faltante).
  • Los valores de cadena de caracteres admiten cualquier carácter no latino, siempre que la codificación sea UTF8.

Nota: cuando la ingesta reconoce una columna CSV o TSV como vector numérico, o como valor de fecha/hora, esta información se refleja y se guarda en la base de datos como metadatos de variables de datos. Para inspeccionar esos metadatos, haga clic en el botón “Descargar” junto al archivo de datos tabulares y seleccione “Metadatos variables”. Esta acción exportará los registros de variables en formato XML DDI. Como alternativa, este fragmento de metadatos también puede descargarse a través de la API de acceso a datos, por ejemplo, Universal Numerical Fingerprint (UNF) de la Guía de desarrollados para obtener más información. Si para usted es importante que las sumas de verificación UNF de sus datos se calculen de forma precisa, verifique que las columnas numéricas y de fecha/hora en su archivo hayan sido reconocidas como tales (como type=numeric y type=character, category=date(time). Si, por ejemplo, una columna numérica es reconocida como un vector de valores de caracteres (cadenas), puede verificar que el formato de los valores sea coherente. Recuerde, un solo valor formateado incorrectamente en la columna la convertirá en un vector de cadenas de caracteres y dará como resultado un UNF diferente. Corrija cualquier error de formato que encuentre, elimine el archivo del dataset e intente la ingesta nuevamente.