<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Questo è molto simile alla versione di questo post dal blog JMP ... basta cross-posting nel caso in cui ti è mancato lì!
In un precedente post sul blog , Ho presentato l'argomento del mio e-poster JMP Discovery Summit 2014 intitolato " Analisi dei dati personali di dieta e fitness con JMP " e ho condiviso i miei interessi in progetti di analisi dell'auto quantificato (QS). Per il mio progetto di poster, ho esportato due diversi tipi di file di dati dal software Activity Manager basato sul web BodyMedia® e ha scritto script JMP Scripting Language (JSL) per importare, formattare e pulire i miei dati per ulteriori analisi e visualizzazioni in JMP. Spero che tu sia stato in grado di unirti a me per ascoltare di più alla conferenza di Cary, ma in caso contrario, puoi dare un'occhiata a PDF del mio e-poster nella sezione Discovery Summit 2014.
Oggi condividerò il modo in cui ho utilizzato JSL per importare e combinare un set di file Excel a più fogli di lavoro contenenti informazioni di riepilogo di attività e calorie. Il software Activity Manager esporta anche i file PDF Food Log, che tratteremo nel mio prossimo post sul blog. A proposito, ho caricato un aggiungere a JMP File Exchange che è possibile utilizzare per importare i propri file BodyMedia® Riepilogo attività e Registro alimenti in JMP. Include anche un componente aggiuntivo bonus che importa file CSV che è possibile scaricare dal popolare sito Web di registrazione cibo MyFitnessPal utilizzando un'estensione di Chrome.
Per questo post del blog della comunità degli utenti, volevo aggiungere una nota sul test del mio componente aggiuntivo che non era presente nella versione pubblica di questo blog. Scrivo molte sceneggiature per me stesso ma questa è stata la mia prima esperienza mettendo un'interfaccia utente in cima al mio script e preoccupandomi dei bug che altri potrebbero incontrare nell'uso del componente aggiuntivo. Sono dipeso pesantemente da due tester JMP e esperti di scripting durante questo processo, Melanie Drake e Audrey Shull. Melanie ha condiviso il codice per una semplice finestra di dialogo che ho adattato per il mio caso. Audrey ha fatto un primo giro di test aggiuntivi per me e mi ha suggerito di spezzare lo script in modo da poter fare una migliore convalida dell'input dell'utente e aggiungere ulteriori opzioni di controllo degli errori al mio script. Questi includevano la convalida dell'esistenza di directory e file e un controllo per verificare se l'utente desiderava sovrascrivere un file esistente.
Nella macchina sulla via di casa da una vacanza in famiglia in Florida, ho abbozzato il seguente schema di test per il mio dialogo e la mia sceneggiatura nel mio taccuino sempre presente. Più tardi, quando sono tornato davanti al mio computer, ho creato il seguente PowerPoint che includeva schermate delle finestre di dialogo per il componente aggiuntivo e alcune delle possibili azioni che un utente poteva intraprendere. Ho trovato estremamente utile identificare dove stavo incontrando bug nei miei test e cosa erano (in scatole rosse). È stato soddisfacente contrassegnarli come li ho risolti con le correzioni alla mia sceneggiatura. Il mio add-in molto semplice ha un numero notevole di possibili percorsi da testare, riportando a casa ancora una volta quanto sia impegnativo sviluppare e testare software complessi. Questo esercizio mi ha fatto apprezzare ancora di più i nostri sviluppatori e tester di JMP per tutto il lavoro che svolgono ogni giorno!

Torna a prima ho creato il componente aggiuntivo, però. All'inizio di agosto, mentre preparavo il mio poster Discovery, ho esportato circa 50 file di sommario delle attività e 50 di registro degli alimenti che coprivano il periodo di tempo dal 20/12/10 al 28/7/14. I dati di riepilogo delle attività di BodyMedia® vengono salvati in cartelle di lavoro di Excel contenenti sei fogli di lavoro diversi, ma mi interessava importare i dati solo dai primi cinque: riepilogo, attività, pasti, sospensione e peso. Puoi vedere i dettagli dei contenuti degli altri fogli di lavoro in il mio e-poster .

Gran parte del mio riepilogo delle attività I file di Excel contenevano quattro settimane di dati, sebbene alcuni riguardassero meno settimane. Tutti i file avevano intestazioni di colonna sulla riga 5 e la maggior parte aveva 28 righe di dati sulle prime quattro schede, anche se il numero di righe nella quinta scheda (Peso) variava. Prima del 2013, ho inserito le misurazioni del peso manualmente in Activity Manager. Nel gennaio 2013, ho iniziato a usare a Withings Smart Body Analyzer scala, che carica le misurazioni del peso in modalità wireless nel proprio software basato sul Web e le condivide automaticamente tramite l'integrazione di terze parti con Activity Manager.
Ho deciso di sceneggiare il processo di importazione dopo aver importato in modo interattivo i miei file di dati due volte, a circa un anno di distanza. L'importazione interattiva è stata più dispendiosa in termini di tempo la seconda volta perché avevo ancora più file e fogli di lavoro con cui lavorare. Poiché accumulo nuovi dati ogni giorno, il mio numero di file crescerà sempre nel tempo. Dopo la seconda importazione, ho formattato le mie colonne e aggiunto le formule alla tabella dei dati combinata, solo per confrontarla con la tabella dalla mia prima importazione e ho capito che avevo dimenticato diversi passaggi importanti.
Mentre tornavo indietro per completare i passaggi che avevo perso, ho iniziato a considerare come lo scripting potesse rendere la rielaborazione di tutti i miei file molto più semplice e veloce. Se il processo di importazione fosse più semplice, guarderei i nuovi dati molto più spesso. Fortunatamente, ho scoperto che anche uno script principiante come me poteva scrivere il JSL per importare e combinare i miei file. Ho iniziato con gli script di origine (aggiunti automaticamente alle tabelle di dati JMP durante l'importazione interattiva) e gli esempi JSL dalla documentazione online e dai forum di discussione. Ho fatto un ciclo su tutti i miei file usando una strategia modellata dopo un esempio di importazione di file di testo in a SESUG scritto dallo sviluppatore JMP Michael Hecht. Essendo l'esperto Mac di lunga data di JMP, Michael è ben noto per il suo codice di alta qualità ed elegante in tutte le lingue, quindi perché non prendere in prestito da un master?
Mi sono imbattuto in alcuni problemi mentre lavoravo per combinare i miei dati in un'unica tabella unificata. Uno che dovevo gestire prima dell'importazione era che la colonna Data nella scheda Sospensione conteneva un intervallo durante la notte piuttosto che un singolo giorno come tutti gli altri fogli di lavoro, impedendomi di unirli direttamente senza un passo di pre-elaborazione. Ad esempio, un valore di 12/20 / 2012-12 / 21/2012 indica la notte di sonno iniziata il 20/12/2014 e terminata la mattina del 21/12/2014. Ho analizzato la data del secondo giorno utilizzando l'editor di formule JMP e la funzione del modello di carattere di Word JMP.

Dopo aver creato la formula in modo interattivo, ho aggiunto del codice al mio script per rendere questi passaggi facilmente ripetibili con l'aiuto della JSL Ottieni uno script comando. Esecuzione del comando MyColName << Ricevi script; nella colonna Date della scheda Sleep è stato stampato uno snippet di chiave di JSL nel log di JMP, che ho aggiunto al mio script per automatizzare questo passaggio. Nella mia tabella finale, il valore hr: m visualizzato nella colonna Sleep rappresentava quanto avevo dormito prima di svegliarmi quella mattina.
C'erano ulteriori informazioni nei miei file di input che non volevo includere nella mia tabella JMP finale. Totali calorici, medie e obiettivi sono stati riepilogati in fondo a tutti i miei fogli di lavoro (righe 36-39 nella figura della tabella sopra). Ho aggiunto passaggi al mio script per filtrare questi sommari, le righe di informazioni sopra le intestazioni delle colonne e anche le righe vuote. In totale, la versione della mia tabella di dati sull'attività che ho utilizzato per il mio poster Discovery Summit conteneva 1.316 righe di dati giornalieri sulle calorie consumate e bruciate, misure di attività, misure del sonno e del peso.
La mia tabella dei dati non era ancora pronta per l'analisi. Le colonne numeriche nella mia tabella contenenti durate e percentuali che non sono state formattate correttamente durante l'importazione. Ho aggiunto in modo interattivo formati, codici valore mancanti e tipi di modellazione come proprietà di colonne. Ho usato la funzione di colonna Trasforma nella mia colonna Data per aggiungere rapidamente nuove variabili Date Time come Anno, Mese, Settimana e Giorno alla mia tabella, e quindi aggiunto al mio script per automatizzare tali passaggi. Ho anche aggiunto una nuova colonna formula al tavolo (calorie bruciate-calorie consumate) per rappresentare il mio deficit calorico / eccesso per un dato giorno.
Se si dispone di file di riepilogo attività BodyMedia® salvati in formato Excel, è possibile scaricare il mio aggiungere da File Exchange per eseguire un'importazione point-and-click dei propri file in JMP. Questo componente aggiuntivo supporta il tipo di file Riepilogo attività che ho appena descritto, i file di registro cibo BodyMedia® salvati come testo e anche i file di testo del registro alimenti che è possibile esportare dal popolare (e gratuito) MyFitnessPal con l'aiuto di un'estensione di Chrome.
Un ringraziamento speciale al responsabile dei test JMP Audrey Shull e alla scrittrice tecnica Melanie Drake per suggerimenti sugli script e test aggiuntivi! Restate sintonizzati per il mio prossimo post sul blog, dove descriverò come ho automatizzato l'importazione dei miei file di registro cibo BodyMedia® usando JSL.