<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Dans mon précédent Dans cet article de blog, j'ai décrit comment j'ai importé mes fichiers de données BodyMedia® Activity Summary d'Excel vers JMP. Aujourd'hui, je vais partager comment j'ai automatisé l'importation de près de quatre ans de mes journaux alimentaires BodyMedia® dans JMP. J'ai également téléchargé un ajouter à au JMP File Exchange que vous pouvez utiliser pour importer vos propres fichiers de résumé d'activité et de journal alimentaire, ainsi que des fichiers journaux alimentaires au format CSV à partir du site Web populaire et gratuit d'enregistrement alimentaire MyFitnessPal.
Pour mon projet d'affiche (voir 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 journaux d'aliments exportés à partir du logiciel BodyMedia® couvrant la période du 20/12/10 au 28/07/14. J'ai exporté mes fichiers journaux alimentaires à partir du logiciel Web Activity Monitor BodyMedia® au format PDF.
Lorsque j’ai commencé à travailler avec mes fichiers journaux alimentaires, j’ai réalisé que je ne pourrais pas les traiter directement puisque JMP ne prend pas en charge l’importation à partir du format PDF. L’expérience qui a suivi m’a permis de mieux comprendre pourquoi c’est le cas. J'ai entendu des clients suggérer que JMP devrait ajouter la prise en charge de l'importation PDF, et les développeurs JMP répondent que les tableaux dans les PDF sont destinés à des fins de présentation et ne sont souvent pas organisés dans un format standard comme les autres types de fichiers pris en charge par JMP. J’en ai fait l’expérience avec mes propres fichiers !
Au départ, je pensais pouvoir convertir mes fichiers PDF de journaux alimentaires au format Excel et les importer en utilisant une approche similaire à celle que j'avais l'habitude de faire. importer mes fichiers récapitulatifs d'activité . Bien que j'aie essayé une variété de produits logiciels promettant une conversion facile de PDF en Excel, je ne peux que qualifier l'ensemble de l'expérience d'échec épique. J'ai trouvé que la structure des tableaux convertis était très irrégulière d'une page à l'autre. 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 passer une minute de plus sur cette tâche incroyablement ennuyeuse, et j'avais alors 40 fichiers à traiter ! Je n'étais pas disposé à attendre le Discovery Summit 2017 pour importer mes données, j'ai donc décidé de rechercher un itinéraire plus simple 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 longueur variable, délimités par des espaces, suivis de nombres délimités par des espaces représentant les calories, la taille des portions 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, donc aucune des deux options n'a produit un tableau de données prêt à être analysé à 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 lisez mes articles précédents, vous savez que j'ai beaucoup emprunté à un exemple JSL d'importation de texte du Document SESUG écrit par Michael Hecht .
Une fois mes fichiers importés et concaténés, j'ai pu analyser des informations individuelles de chaque ligne de texte à l'aide d'expressions régulières en JSL. Au début, j'avais une certaine appréhension à propos de ce chemin. Même si j'avais utilisé Perl pour les expressions régulières à mes études supérieures, mes compétences en matière d'expressions régulières étaient rouillées et je n'avais jamais utilisé d'expressions régulières en JSL auparavant. J'ai rendu visite au développeur JMP Craige Hales, qui a implémenté le moteur d'expression régulière dans JMP, et il m'a fourni de nombreux encouragements et des conseils vers 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, à la teneur en calories et aux grammes de divers types de macronutriments. J'ai utilisé des boucles comme celles-ci pour analyser les données dont j'avais besoin et placer chaque élément d'information dans sa propre colonne. Ci-dessous, j'ai vérifié le nom du repas et je l'ai capturé là où il apparaissait : sur la première ligne de chaque jour. J'ai ensuite rempli les cellules de la colonne Repas avec cette valeur de nom de repas jusqu'à ce que je rencontre une nouvelle correspondance, indiquant le début des éléments pour le prochain repas.
// Capturer le repas
pour (c=1, c <= y, c++,
string = Combinedlog : système de gestion du mode de vie et des calories;
//Vérifie la correspondance avec le nom du repas
w = ( Correspondance Regex (
chaîne,
Pat Regex("^(Petit déjeuner | Collation du matin | Déjeuner | Collation de l'après-midi | Dîner | Collation tardive) (.*$)")));
si (N éléments (w) == 0,
Journal combiné : repas= repas ;
continuer ());
Journal combiné : système de gestion du mode de vie et des calories= w[3];
Journal combiné : repas= w[2];
repas = w[2];
);
J'ai extrait toutes les informations dont j'avais besoin en utilisant la stratégie générale de correspondance d'expressions régulières présentée ci-dessus. Après avoir exécuté la version finale de mon script, j'avais un tableau bien formaté avec 34 432 lignes de noms d'aliments avec des informations associées sur les calories et les macronutriments, organisées par date et par repas.
Si vous disposez de fichiers journaux alimentaires BodyMedia enregistrés au format PDF, vous pouvez les enregistrer dans des fichiers texte dans Adobe Acrobat et télécharger mon ajouter à à partir de JMP File Exchange pour effectuer une importation par pointer-cliquer de vos propres fichiers journaux alimentaires dans JMP. Les outils de ce complément prennent en charge les fichiers de résumé d'activité, les fichiers de journaux alimentaires enregistrés sous forme de texte et les fichiers texte de journaux alimentaires exportés depuis MyFitnessPal. Un merci tout spécial à Audrey Shull, responsable des tests chez JMP, et à la testeuse Melanie Drake pour leurs suggestions de scripts et leur aide aux tests de compléments !
Malheureusement, le sentiment de victoire que j’ai ressenti suite à mon importation réussie a été de courte durée. Un résumé rapide de mon tableau a révélé qu’il contenait plus de 1 800 noms d’aliments uniques ! J'ai commencé à réaliser que mon travail avec ce tableau de données ne faisait que commencer. Mon journal alimentaire était rempli d'incohérences de dénomination puisque j'avais sélectionné une variété d'articles nommés différemment 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 modèles dans les données de mon journal alimentaire. Restez à l'écoute de la quatrième partie de cette série de blogs pour en savoir plus sur mes aventures dans le recodage des noms d'aliments.
Découvrez ce récent article de blog pour en savoir plus sur la façon dont mon intérêt pour les projets d'auto-analyse quantifiée (QS) m'a amené à créer une affiche électronique pour le Discovery Summit 2014 intitulée Analyse des données de régime personnel et de condition physique avec JMP. Si vous n'avez pas pu voir mon affiche électronique lors de la conférence à Cary, vous pouvez vous connecter et voir une version PDF dans la section Discovery Summit 2014 de la communauté des utilisateurs JMP.