En una anterior entrada en el blog , Presenté el tema de mi e-poster de JMP Discovery Summit 2014 titulado “ Análisis de datos personales de dieta y estado físico con JMP ” y compartí mis intereses en proyectos de análisis de yo cuantificado (QS). Para mi proyecto de póster, exporté dos tipos diferentes de archivos de datos desde el software Activity Manager basado en la web BodyMedia® y escribí los scripts JMP Scripting Language (JSL) para importar, formatear y limpiar mis datos para su posterior análisis y visualización en JMP. Espero que hayas podido acompañarme para escuchar más en la conferencia en Cary, pero si no, puedes iniciar sesión en el Comunidad de usuarios de JMP y echa un vistazo a PDF de mi e-poster En la sección Discovery Summit 2014. (¡La membresía en la comunidad de usuarios es gratuita y es una excelente manera de aprender de los usuarios de JMP de todo el mundo!)
Hoy, compartiré cómo utilicé JSL para importar y combinaré un conjunto de archivos Excel de múltiples hojas de trabajo que contienen información de resumen de calorías y actividad. El software Activity Manager también exporta archivos PDF de registro de alimentos, que cubriré en mi próxima publicación del blog. Por cierto, he subido un complemento al intercambio de archivos JMP que puede usar para importar sus propios archivos de resumen de actividad y registro de alimentos BodyMedia® en JMP. También incluye un complemento adicional que importa archivos CSV que puede descargar del popular sitio web de registro de alimentos MyFitnessPal utilizando una extensión de Chrome.
A principios de agosto, exporté casi 50 archivos de Resumen de actividad y 50 Registros de alimentos que cubrían el período del 20 de enero de 2010 al 28 de julio de 2014. Los datos del Resumen de la actividad se guardan en libros de Excel que contienen seis hojas de trabajo diferentes, pero me interesaba importar datos de solo los primeros cinco: Resumen, Actividad, Comidas, Sueño y Peso. Puede ver los detalles del contenido de las otras hojas de trabajo en mi e-cartel .

La mayoría de mis archivos de Resumen de actividad contenían cuatro semanas de datos, aunque algunos cubrían menos semanas. Todos los archivos tenían encabezados de columna en la línea 5 y la mayoría tenía 28 líneas de datos en las primeras cuatro pestañas, aunque el número de filas en la quinta pestaña (Peso) variaba. Antes de 2013, ingresé las mediciones de peso manualmente en el Administrador de actividades. En enero de 2013 comencé a utilizar un Analizador de cuerpo inteligente Withings escala, que carga las mediciones de peso de forma inalámbrica en su propio software basado en web y las comparte automáticamente a través de una integración de terceros con el Administrador de Actividades.
Decidí escribir el proceso de importación luego de importar interactivamente mis archivos de datos dos veces, con un año de diferencia. La importación interactiva consumió más tiempo la segunda vez porque tenía incluso más archivos con los que trabajar. Como acumulo nuevos datos cada día, mi número de archivos siempre aumentará con el tiempo. Después de la segunda importación, formateé mis columnas y agregué fórmulas a la tabla de datos combinados, solo para compararla con la tabla de mi primera importación y darme cuenta de que había olvidado varios pasos importantes.
Mientras retrocedía para completar los pasos que había omitido, comencé a considerar cómo los scripts podían hacer que el reprocesamiento de todos mis archivos fuera mucho más simple y rápido. Si el proceso de importación fuera más sencillo, vería los datos nuevos con mayor frecuencia. Afortunadamente, encontré que incluso un guionista novato como yo podría escribir el JSL para importar y combinar mis archivos.
Comencé con los scripts de Source (agregados automáticamente a las tablas de datos JMP durante la importación interactiva) y los ejemplos de JSL de la documentación en línea y los foros de discusión. Recorrí todos mis archivos usando una estrategia modelada después de un ejemplo de importación de archivos de texto en un SESUG Papel escrito por el desarrollador de JMP Michael Hecht. Como experto en Mac en JMP durante mucho tiempo, Michael es conocido por su código elegante y de alta calidad en todos los idiomas, así que ¿por qué no pedir prestado a un maestro?
Me encontré con algunos inconvenientes mientras trabajaba para combinar mis datos en una sola tabla unificada. Una de las cosas que tuve que manejar antes de importar fue que la columna Fecha en la pestaña Suspender contenía un rango durante la noche en lugar de un solo día, como todas las otras hojas de trabajo, lo que me impedía fusionarlo directamente sin un paso de preprocesamiento. Por ejemplo, un valor de 12/20/2012/12/21/2012 indicó la noche de sueño que comenzó el 20/12/14 y terminó la mañana del 12/21/14. Analicé la fecha del segundo día utilizando el editor de fórmulas JMP y la función de patrón de caracteres de palabras JMP.

Después de crear la fórmula de manera interactiva, agregué código a mi script para hacer que estos pasos sean fácilmente repetibles con la ayuda de JSL Obtener guión mando. Ejecutando el comando MyColName << Obtener Script; en la columna Fecha de la pestaña Suspender, se imprimió un fragmento de clave de JSL en el registro de JMP, que agregué a mi script para automatizar este paso. En mi mesa final, el valor hr: m que se muestra en la columna Dormir representa cuánto había dormido antes de despertarme esa mañana.
Había información adicional en mis archivos de entrada que no quería que se incluyera en mi tabla JMP final. Los totales, promedios y objetivos de calorías se resumieron en la parte inferior de todas mis hojas de trabajo (líneas 36-39 en la imagen de la tabla de arriba). Agregué pasos a mi script para filtrar estos resúmenes, las líneas de información sobre los encabezados de las columnas y también las filas en blanco. En total, la versión de mi tabla de datos de actividad que utilicé para mi póster de Discovery Summit contenía 1,316 filas de datos diarios sobre calorías consumidas y quemadas, medidas de actividad, mediciones de sueño y peso.
Mi tabla de datos aún no estaba lista para el análisis. Las columnas numéricas de mi tabla contienen duraciones y porcentajes que no se formatearon correctamente al importar. Agregué formatos, códigos de valor faltantes y tipos de modelos como propiedades de columna interactivamente. Utilicé la función de columna Transformar en mi columna Fecha para agregar rápidamente nuevas variables de fecha y hora, como Año, Mes, Semana y Día a mi tabla, y luego las agregué a mi secuencia de comandos para automatizar esos pasos. También agregué una nueva columna de fórmula a la tabla (Calorías quemadas con calorías consumidas) para representar mi déficit / exceso calórico para un día determinado.
Si tiene archivos de resumen de actividades BodyMedia® guardados en formato Excel, puede descargar mi complemento desde el Intercambio de archivos para realizar una importación de apuntar y hacer clic de sus propios archivos a JMP. Este complemento es compatible con el tipo de archivo de resumen de actividad que acabo de describir, los archivos de registro de alimentos BodyMedia® guardados como texto y también los archivos de texto de registro de alimentos que puede exportar desde el popular (y gratuito) MyFitnessPal con la ayuda de una extensión de Chrome.
Un agradecimiento especial a la gerente de pruebas de JMP, Audrey Shull, y a la escritora técnica Melanie Drake por las sugerencias de scripting y la ayuda de pruebas de complementos. Manténgase atento a mi próxima publicación de blog, donde describiré cómo automaticé la importación de mis archivos de registro de alimentos BodyMedia® utilizando JSL.
Lo que estamos leyendo | Yo Cuantificado escribió:
[â ¦] Uso de JSL para importar datos de monitor de BodyMedia Fit Activity a JMP por Shannon Conners. Presentamos el increíble trabajo de visualización de Shannon en nuestra edición del 20 de septiembre de Lo que estamos leyendo. Ella regresa aquí con una guía detallada sobre cómo explorar los datos de BodyMedia y MyFitnessPal en JMP. Incluso como usuario no JMP, me encantó conocer la extensión de Chrome de MyFitnessPal Data Downloader que usó para descargar los datos de sus comidas. [â ¦]