j'ai fini mon précédent blog Au moment de mon projet JMP Discovery Summit, j'ai réalisé l'ampleur de la redondance des noms de produits alimentaires au cours des presque quatre années de journalisation des aliments collectés avec l'application BodyMedia® Activity Manager. Même si je savais que j'avais mangé des variétés de certains aliments préparées différemment, la réplication était aussi un artefact consistant à utiliser des recherches par mot-clé pour localiser les bons éléments à ajouter à mon journal des aliments. Le mot clé que j'ai utilisé pour rechercher un article donné variait, et l'élément correspondant que j'avais choisi de consigner pour un repas donné variait également. J'ai donc souvent choisi différents noms d'éléments pour des aliments très similaires.
En fin de compte, je voulais résumer le nombre de calories que je mangeais à partir d’éléments apparentés et également faire le total des calories consommées par catégorie d’aliments. Une première étape judicieuse a été de réduire le nombre de noms d’aliments redondants dans mon tableau de données. Je souhaitais que le processus de recodage des produits alimentaires soit aussi simple que possible et, bien entendu, reproductible par le biais de scripts afin que je puisse traiter de nouvelles données avec un minimum de travail.
J'ai exploré en utilisant le JMP 11 Recoder la plate-forme pour regrouper des noms d'aliments similaires en une seule valeur nettoyée. Avant de commencer à recoder, mon tableau de données contenait 1 859 noms d'aliments uniques. Étant donné que les noms des produits alimentaires étaient affichés dans la fenêtre Recode par ordre alphabétique, j'ai trouvé difficile de localiser des aliments similaires qui n'étaient pas répertoriés par ordre alphabétique. Par exemple, si je souhaitais renommer des articles presque identiques sous des noms de marque différents, je devais d'abord localiser tous les articles connexes disséminés dans ma liste d'articles (par exemple, "CHIPS AHOY! Cookies aux pépites de chocolat moelleux", "Cookie, pépites de chocolat," Commercial, 12% à 17% de matières grasses "," Biscuit aux pépites de chocolat Jason's Deli "," Biscuits aux pépites de chocolat PILLSBURY, pâte réfrigérée ") et renommez-les en une valeur nettoyée courante (par exemple," Cookie, Pépite de chocolat "). Pour localiser tous les éléments associés, j'ai effectué une recherche dans la table de données à l'aide de la fonction Rechercher ou j'ai utilisé Rechercher dans le menu triangle rouge Filtre de données.

Une fois tous les éléments associés localisés, je les ai fait défiler dans la fenêtre Recodage et les ai collés dans le nom de l'élément nettoyé. À un moment donné, alors que je travaillais dans mon ensemble de données, j'ai accidentellement fermé la fenêtre Recode sans enregistrer mes modifications. Au lieu de répéter mon travail, j'ai décidé d'explorer une stratégie alternative qui, je l'espérais, me permettrait de classer mes aliments plus rapidement et d'assigner facilement de nouveaux aliments à mes groupes d'aliments.
J'ai utilisé la fonctionnalité de texte libre (disponible dans l'onglet Plusieurs de la boîte de dialogue de lancement de la plate-forme JMP Categorical) pour extraire la liste des mots uniques de mes noms d'aliments. J'ai examiné la liste pour supprimer les mots communs ou non spécifiques et j'ai placé les mots restants dans des catégories d'aliments. Ensuite, j'ai utilisé une boucle JSL pour rechercher ces mots-clés dans les noms des aliments à l'aide de la fonction PatMatch dans JMP. Si j'ai trouvé un mot clé, j'ai ajouté la catégorie de ce mot à une liste délimitée par des virgules dans une colonne enregistrée avec une propriété de colonne à réponses multiples.
Alors qu'au départ, je pensais que cette approche simplifierait la classification des nouveaux éléments, mon script a pris beaucoup de temps à rechercher tous les éléments pour tous les mots clés. Il m'a fallu encore plus de temps pour examiner tous les aliments classés et vérifier qu'ils avaient été classés dans des catégories appropriées en fonction des mots-clés qu'ils contenaient. En examinant ma table traitée, j'ai été consterné de noter de nombreux correspondances de mots clés non spécifiques. Dans un exemple, "Le thon pâle au Morceau de Mer" correspondait aux catégories d'aliments Viande (mot clé: poulet) et Poisson (mot clé: poisson). La crémeuse Coffeemate Non-Lairy Creamer a inclus le mot-clé café, ce qui l'a mal attribué au groupe CoffeeMilk. Je me suis rendu compte que je devrais corriger certains des noms d'origine avant la correspondance du motif et nettoyer les autres listes de catégories après la correspondance. Étant donné que je devais reproduire chaque étape à l'aide de scripts, il me fallait écrire un fichier JSL personnalisé ou générer un fichier JSL de nettoyage de données avec Recode. J'ai donc décidé de revenir à ma stratégie Recode d'origine.
À peu près à la même époque, James Preiss, développeur JMP récemment recruté, commença à réorganiser Recode pour JMP 12. J'ai partagé le cas d'utilisation de Recode avec James et le journal des aliments, et bon nombre de mes problèmes étaient liés aux demandes des clients figurant déjà sur sa liste de tâches. Dès que les mises à jour de Recode ont commencé à apparaître dans les versions quotidiennes de JMP 12, je les ai testées avec mes fichiers de journal des aliments et ai partagé un sous-ensemble de ma liste d'articles avec la testeuse de James et Recode, Rosemary Lucas. J'ai été ravi de constater que de nombreuses étapes que j'ai effectuées manuellement dans JMP 11 et combinant les scripts Recode, Filtre de données, Rechercher / remplacer et JSL sont intégrées à Recode dans JMP 12.
En fait, bien avant que les mises à jour de la plate-forme Recode ne soient terminées, j'ai pu créer un tableau des noms d'éléments nettoyés et regroupés à partir de ma liste d'aliments, beaucoup plus rapidement que par le passé. J'ai ensuite ajouté des catégories pour chaque nom d'élément de nourriture nettoyé et les ai fusionnées dans mon tableau de données du journal des aliments en joignant le nom de l'élément d'origine. Utiliser Recode m'a aidé à réduire de moitié le nombre original de noms uniques dans mon tableau (1.859)! Maintenant, lorsque j'importe de nouveaux fichiers du journal des aliments, je retourne brièvement à Recode pour classer tous les nouveaux articles, met à jour le tableau des noms / catégories d'articles, le fusionne avec mes données et je suis prêt à continuer.
JMP 12 ne sortira pas avant mars 2015, alors j'avoue que je suis délibérément vague sur les nombreuses nouvelles fonctionnalités de la plate-forme Recode. J'adore les mises à jour de Recode et je sais que vous aussi! (Recherchez des articles de blog plus détaillés sur Recode à l'approche de mars et une fois le logiciel disponible.)
Dans mon prochain article, je présenterai quelques-uns des graphiques que j'ai créés pour mon affiche du Sommet de la découverte et montrerai comment je les ai améliorés à l'aide de: Xan Gregg , créateur de la plate-forme Graph Builder et leader du groupe Data Discovery chez JMP.
Pour plus d’informations sur mon affiche et mes intérêts en matière d’analyse de données quantifiées (QS), consultez la section premier article de blog dans cette série. Les messages suivants partagent des détails sur la exporté mes fichiers de résumé d'activité au format Excel et Fichiers du journal des aliments depuis le logiciel BodyMedia® Activity Manager et importés dans JMP. J'ai utilisé des scripts JSL personnalisés pour créer deux tables de données JMP, l'une avec 1 316 lignes de données d'activité et l'autre avec 34 432 lignes d'aliments enregistrées sur près de quatre ans. J'ai écrit un JMP ajouter à prise en charge de ces types de données et des fichiers de journal alimentaire au format CSV à partir du site Web gratuit MyFitnessPal.