Dans mon précédent blog , J’ai décrit comment j'ai importé mes fichiers de données BodyMedia® Activity Summary Excel dans Excel. JMP . Aujourd'hui, je vais vous raconter comment j'ai automatisé l'importation de fichiers de journaux d'aliments BodyMedia® pendant près de quatre ans dans JMP. J'ai aussi téléchargé un ajouter à JMP File Exchange que vous pouvez utiliser pour importer vos propres fichiers de résumé d'activité et de journal des aliments, ainsi que des fichiers de journal des aliments au format CSV à partir du site Web gratuit et populaire de journalisation des aliments MyFitnessPal.
Pour mon projet de poster (Voir les détails ci-dessous), j'ai créé des scripts JSL pour combiner, analyser et formater près de 50 fichiers Excel de résumé d'activité et 50 fichiers de journal des aliments exportés à partir du logiciel BodyMedia® couvrant la période du 20/12/10 au 28/07/14. J'ai exporté les fichiers du journal des aliments à partir du logiciel Web Monitor BodyMedia®, au format PDF.
Lorsque j'ai commencé à travailler avec mes fichiers du journal des aliments, je me suis rendu compte que je ne serais pas en mesure de les traiter directement car JMP ne prend pas en charge l'importation depuis le format PDF. L'expérience qui a suivi m'a permis de comprendre beaucoup mieux pourquoi. J'ai entendu des clients dire que JMP devrait prendre en charge l'importation de fichiers PDF. Les développeurs JMP répondent que les tableaux PDF sont destinés à la présentation et ne sont souvent pas organisés dans un format standard, contrairement aux autres types de fichiers pris en charge par JMP. Je l'ai expérimenté de première main avec mes propres fichiers!
Au départ, je pensais pouvoir convertir mes fichiers de journal alimentaire PDF au format Excel et les importer en utilisant une approche similaire à celle utilisée auparavant. importer mes fichiers de résumé d'activité . Bien que j'aie essayé une variété de logiciels promettant une conversion facile de PDF à Excel, je ne peux que caractériser toute l'expérience comme un échec épique. J'ai trouvé que la structure des tables converties était très irrégulière de page en page. Après avoir passé une heure à éditer manuellement un seul fichier Excel dans un format plus standard, j’ai abandonné. Je ne pouvais pas imaginer consacrer une minute de plus à cette tâche incroyablement ennuyeuse et j'avais 40 dossiers à traiter à ce moment! Je n'étais pas disposé à attendre le Sommet de la découverte 2017 pour importer mes données. J'ai donc décidé de rechercher un itinéraire plus facile et plus rapide.
J'ai découvert que je pouvais enregistrer mes fichiers PDF sous forme de fichiers texte à l'aide d'Adobe Acrobat. Malheureusement, les fichiers contenaient des noms d'éléments de différentes longueurs délimitées par des espaces, suivis de nombres délimités par des espaces représentant les calories, la taille de la portion et les quantités de macronutriments. Les options d'importation de texte par pointer-cliquer dans JMP nécessitent une longueur fixe ou des délimiteurs entre les champs. Par conséquent, aucune de ces options n'a généré de tableau de données prêt à l'analyse à partir de mes fichiers. J'ai plutôt décidé d'importer et de combiner mes fichiers en utilisant une boucle de structure similaire à celle que j'ai écrite pour importer mes fichiers Excel de résumé d'activité. (Si vous avez lu mes précédents articles, vous savez que j’ai beaucoup emprunté à un exemple JSL d’importation de texte du Papier SESUG écrit par Michael Hecht .
Une fois mes fichiers importés et concaténés, je pouvais analyser des informations individuelles dans chaque ligne de texte à l'aide d'expressions régulières en JSL. J'ai eu une certaine appréhension à propos de ce chemin au début. Bien que j'aie utilisé Perl pour les expressions régulières lors des études supérieures, mes compétences en expression rationnelle étaient rouillées et je n'avais jamais utilisé les expressions rationnelles en JSL auparavant. J'ai rendu visite à Craige Hales, développeur de JMP, qui a implémenté le moteur d'expression régulière dans JMP, et il m'a beaucoup encouragé et cité des exemples utiles.
Pour formater mon tableau en vue d'une analyse plus approfondie, je devais parcourir toutes les lignes du tableau et faire correspondre les modèles correspondant aux dates, aux noms de repas, au contenu en calories et aux grammes de divers types de macronutriments. J'ai utilisé des boucles comme celle ci-dessous pour analyser les données dont j'avais besoin et placer chaque information dans sa propre colonne. Ci-dessous, j'ai vérifié le nom du repas et l'ai capturé d'où il apparaissait - sur la première ligne de chaque jour. J'ai ensuite rempli les cellules de la colonne Repas avec la valeur du nom du repas jusqu'à ce que je rencontre une nouvelle correspondance, indiquant le début des éléments pour le prochain repas.
// Capture du repas
pour (c = 1, c <= y, c ++,
string = Combinedlog: Système de gestion du mode de vie et des calories;
// Vérifier la correspondance avec le nom du repas
w = (match de regex (
chaîne,
Pat Regex ("^ (Petit-déjeuner | Snack AM | Déjeuner | Snack PM | Dîner | Snack tardif) (. * $)")));
si (N éléments (w) == 0,
Combinedlog: Repas = repas;
continuer ());
Combinedlog: Système de gestion du mode de vie et des calories = w [3];
Combinedlog: Repas = w [2];
repas = w [2];
)
J'ai extrait toutes les informations dont j'avais besoin en utilisant la stratégie de correspondance des expressions rationnelles générale présentée ci-dessus. Après avoir exécuté la version finale de mon script, j'ai eu un tableau bien formaté avec 34 432 lignes de noms d'aliments avec des informations de calories et de macronutriments associées organisées par date et par repas.
Si vous avez des fichiers journaux BodyMedia enregistrés au format PDF, vous pouvez les enregistrer dans des fichiers texte dans Adobe Acrobat et télécharger mes fichiers. ajouter à à partir de l’échange de fichiers JMP pour effectuer une importation point-clic de vos propres fichiers de journal des aliments dans JMP. Les outils de ce complément prennent en charge les fichiers de résumé d'activité, les fichiers du journal des aliments enregistrés en tant que texte et les fichiers texte du journal des aliments exportés à partir de MyFitnessPal. Nous remercions tout particulièrement Audrey Shull, responsable des tests JMP, et la testeuse Melanie Drake, pour leurs suggestions de script et l’aide pour les tests de complément!
Malheureusement, le sentiment de victoire que j'ai ressenti de ma réussite a été de courte durée. Un rapide résumé de mon tableau a révélé qu'il contenait> 1 800 noms d'aliments uniques! J'ai commencé à réaliser que mon travail avec cette table de données ne faisait que commencer. Mon journal des aliments était rempli d'incohérences de nommage puisque j'avais sélectionné une variété d'articles de nom différent mais très similaires dans la base de données d'aliments au fil des ans. J'allais devoir nettoyer les noms de mes aliments et les regrouper de manière plus significative si je voulais commencer à comprendre les tendances de mes données du journal des aliments. Restez à l'écoute pour la quatrième partie de cette série de blogs pour en savoir plus sur mes aventures dans le recodage des noms d'éléments culinaires.
Découvrez cette récente article de blog pour en savoir plus sur la manière dont mon intérêt pour les projets d'analyse d'auto-évaluation quantifiée (QS) m'a amené à créer une affiche électronique Discovery Summit 2014 intitulée « Analyse des données personnelles sur l'alimentation et la condition physique avec JMP. ” Si vous ne pouviez pas voir mon e-poster à la conférence de Cary, vous pouvez vous connecter et voir une version PDF dans la section Discovery Summit 2014 de la communauté d'utilisateurs JMP.