<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ceci est très similaire à la version de ce message du blog JMP ... il suffit de le poster au cas où vous l'auriez manqué!
Dans un précédent article de blog , J’ai introduit le sujet de mon affiche électronique JMP Discovery Summit 2014 intitulée « Analyse des données personnelles sur l'alimentation et la condition physique avec JMP ” et partagé mes intérêts dans les projets d’analyse d’auto-évaluation quantifiée (QS). Pour mon projet d’affiche, j’ai exporté deux types de fichiers de données différents à partir du logiciel Activity Manager basé sur le Web en BodyMedia® et écrit des scripts JSL (JMP Scripting Language) pour importer, formater et nettoyer mes données afin de les analyser et les visualiser plus en profondeur dans JMP. J'espère que vous avez pu vous joindre à moi pour en savoir plus à la conférence de Cary, mais sinon, vous pouvez consulter un PDF de mon e-poster dans la section Discovery Summit 2014.
Aujourd'hui, je vais vous expliquer comment j'ai utilisé JSL pour importer et combiner un ensemble de fichiers Excel à plusieurs feuilles de calcul contenant des informations récapitulatives sur l'activité et les calories. Le logiciel Activity Manager exporte également les fichiers PDF Food Log, que je couvrirai dans mon prochain article de blog. Au fait, j'ai téléchargé un ajouter à dans l’échange de fichiers JMP que vous pouvez utiliser pour importer vos propres fichiers de résumé d’activité et de journal des aliments BodyMedia® dans JMP. Il comprend également un complément bonus qui importe des fichiers CSV que vous pouvez télécharger à partir du site Web de journalisation des aliments MyFitnessPal, à l’aide d’une extension Chrome.
Pour ce billet de blog de la communauté d'utilisateurs, je voulais ajouter une note sur le test de mon complément qui n'apparaissait pas dans la version publique de ce blog. J'écris beaucoup de scripts pour moi-même, mais ce fut ma première expérience consistant à placer une interface utilisateur au-dessus de mon script et à m'inquiéter des bugs que d'autres utilisateurs pourraient rencontrer lors de l'utilisation de l'add-in. Melanie Drake et Audrey Shull, deux testeurs et experts en scripts de JMP, ont été fortement tributaires de ce processus. Melanie a partagé le code pour un dialogue simple que j'ai adapté à mon cas. Audrey a effectué une première série de tests de complément pour moi et m'a suggéré de scinder le script en plusieurs parties afin de valider davantage la validation des entrées utilisateur et d'ajouter davantage d'options de vérification des erreurs à mon script. Celles-ci incluaient une validation de l'existence du répertoire et du fichier et une vérification pour vérifier si l'utilisateur souhaitait écraser un fichier existant.
Dans la voiture sur le chemin du retour de vacances en famille à FL, j’ai esquissé le schéma de test suivant pour mon dialogue et mon script dans mon carnet de notes toujours présent. Plus tard, lorsque je me suis retrouvé devant mon ordinateur, j'ai créé le PowerPoint suivant, qui comprenait des captures d'écran des boîtes de dialogue du complément et certaines des actions possibles qu'un utilisateur pouvait effectuer. J'ai trouvé extrêmement utile d'identifier les bugs rencontrés lors de mes tests et leur nature (dans les cases rouges). Il était satisfaisant de les marquer car je les ai résolus avec des corrections à mon script. Mon très simple complément comporte un nombre remarquable de chemins à tester, ce qui le ramène encore une fois au défi du développement et du test de logiciels complexes. Cet exercice m'a permis d'apprécier encore plus nos développeurs et testeurs JMP pour tout le travail qu'ils effectuent au quotidien!

Retour à avant que je crée le complément, cependant. Au début du mois d’août, alors que je préparais mon affiche Découverte, j’ai exporté près de 50 fichiers de résumé d’activité et 50 fichiers du journal des aliments couvrant la période du 20/12/10 au 28/07/14. Les données BodyMedia® Activity Summary sont enregistrées dans des classeurs Excel contenant six feuilles de calcul différentes, mais je souhaitais uniquement importer des données provenant des cinq premières: Résumé, Activité, Repas, Sommeil et Poids. Vous pouvez voir les détails du contenu des autres feuilles de calcul dans mon e-poster .

La plupart de mes fichiers de résumé d'activité Excel contenaient quatre semaines de données, même si certains couvraient moins de semaines. Tous les fichiers avaient des en-têtes de colonne sur la ligne 5 et la plupart avaient 28 lignes de données sur les quatre premiers onglets, bien que le nombre de lignes sur le cinquième onglet (Poids) ait varié. Avant 2013, j'avais saisi manuellement les mesures de poids dans le gestionnaire d'activités. En janvier 2013, j'ai commencé à utiliser un Withings Analyseur de corps intelligent balance, qui télécharge les mesures de poids sans fil dans son propre logiciel Web et les partage automatiquement via une intégration tierce avec Activity Manager.
J'ai décidé de créer un script pour le processus d'importation après avoir importé deux fois de manière interactive mes fichiers de données, à environ un an d'intervalle. La deuxième fois, l’importation interactive prenait plus de temps, car j’avais encore plus de fichiers et de feuilles de calcul à utiliser. Étant donné que j'accumule de nouvelles données chaque jour, mon nombre de fichiers augmentera toujours avec le temps. Après la deuxième importation, j'ai formaté mes colonnes et ajouté des formules au tableau de données combiné, pour le comparer au tableau de mon premier import et me rendre compte que j'avais oublié plusieurs étapes importantes.
Tandis que je revenais sur mes pas pour terminer les étapes que j'avais manquées, j'ai commencé à réfléchir à la manière dont les scripts pourraient rendre le traitement de tous mes fichiers beaucoup plus simple et rapide. Si le processus d'importation était plus facile, j'examinerais les nouvelles données beaucoup plus souvent. Heureusement, j'ai découvert que même un scripteur novice comme moi pouvait écrire le JSL pour importer et combiner mes fichiers. J'ai commencé avec des scripts source (ajoutés automatiquement aux tables de données JMP lors de l'importation interactive) et des exemples JSL issus de la documentation en ligne et des forums de discussion. J'ai bouclé sur tous mes fichiers en utilisant une stratégie inspirée d'un exemple d'importation de fichier texte dans SESUG article rédigé par Michael Hecht, développeur de JMP. En tant qu'expert Mac de longue date chez JMP, Michael est réputé pour son code élégant et de grande qualité dans toutes les langues. Pourquoi ne pas emprunter auprès d'un maître?
Je me suis heurté à des difficultés en combinant mes données dans une seule table unifiée. L'un des problèmes que je devais gérer avant l'importation était que la colonne Date de l'onglet Veille contenait une plage journalière plutôt qu'un seul jour, comme toutes les autres feuilles de calcul, ce qui m'empêchait de la fusionner directement sans étape de prétraitement. Par exemple, une valeur de 12/20 / 2012-12 / 21/2012 indique la nuit de sommeil qui a commencé le 20/12/14 et s'est terminée le matin du 21/12/14. J'ai analysé la date du deuxième jour à l'aide de l'éditeur de formules JMP et de la fonction de modèle de caractère JMP Word.

Après avoir créé la formule de manière interactive, j'ai ajouté du code à mon script pour rendre ces étapes facilement répétables avec l'aide de JSL. Obtenir le script commander. Exécuter la commande MyColName << Obtenir le script; Dans la colonne Date de l'onglet Veille, un extrait de clé de JSL a été imprimé dans le journal de JMP, que j'ai ajouté à mon script pour automatiser cette étape. Dans mon tableau final, la valeur hr: m affichée dans la colonne Sommeil représentait combien de temps j'avais dormi avant de me réveiller ce matin-là.
Il y avait des informations supplémentaires dans mes fichiers d'entrée que je ne voulais pas inclure dans ma table JMP finale. Les totaux, les moyennes et les objectifs caloriques ont été résumés au bas de toutes mes feuilles de calcul (lignes 36 à 39 de l’illustration du tableau ci-dessus). J'ai ajouté des étapes à mon script pour filtrer ces résumés, les lignes d'informations situées au-dessus des en-têtes de colonnes et les lignes vierges. Au total, la version du tableau de données sur les activités que j'ai utilisée pour mon affiche du Sommet de la découverte contenait 1 316 lignes de données quotidiennes sur les calories consommées et brûlées, les mesures d'activité, le sommeil et le poids.
Ma table de données n'était pas encore prête pour l'analyse. Les colonnes numériques de ma table contenant des durées et des pourcentages qui n'ont pas été formatés correctement lors de l'importation. J'ai ajouté des formats, des codes de valeur manquants et des types de modélisation en tant que propriétés de colonne de manière interactive. J'ai utilisé la fonctionnalité Transformer la colonne de ma colonne Date pour ajouter rapidement de nouvelles variables Date / Heure telles que Année, Mois, Semaine et Jour à ma table, puis je les ai ajoutées à mon script pour automatiser ces étapes. J'ai également ajouté une nouvelle colonne de formule au tableau (Calories brûlées - Calories consommées) pour représenter mon déficit / excès calorique pour un jour donné.
Si vous avez des fichiers de résumé d’activité BodyMedia® enregistrés au format Excel, vous pouvez télécharger mon ajouter à à partir de l’échange de fichiers pour effectuer une importation pointer-cliquer de vos propres fichiers dans JMP. Ce complément prend en charge le type de fichier Résumé d'activité que je viens de décrire, les fichiers du journal des aliments BodyMedia® enregistrés en tant que texte, ainsi que les fichiers texte du journal des aliments que vous pouvez exporter depuis le populaire (et gratuit) MyFitnessPal à l'aide d'une extension Chrome.
Un merci spécial à Audrey Shull, responsable des tests JMP, et à Melanie Drake, rédactrice technique, pour leurs suggestions de script et les tests complémentaires Restez à l'écoute pour mon prochain article de blog, dans lequel je décrirai comment j'ai automatisé l'importation des fichiers de journal des aliments BodyMedia® à l'aide de JSL.