在早些時候博客文章 ,我介紹了我的JMP Discovery Summit 2014電子海報題為“ 用JMP分析個人飲食和健身數據“ 並分享了我對量化自我(QS)分析項目的興趣。對於我的海報項目,我從基於Web的Activity Manager軟件中導出了兩種不同類型的數據文件 BodyMedia® 並編寫了JMP腳本語言(JSL)腳本來導入,格式化和清理我的數據,以便在JMP中進行進一步的分析和可視化。我希望你能和我一起在卡里的會議上聽到更多,但如果沒有,你可以登錄 JMP用戶社區並查看一個我的電子海報PDF 在Discovery Summit 2014部分。(用戶社區的會員資格是免費的,是向世界各地的JMP用戶學習的好方法!)
今天,我將分享我如何使用JSL導入和組合一組包含活動和卡路里摘要信息的多工作表Excel文件。 活動管理器軟件還導出PDF Food Log文件,我將在下一篇博客文章中介紹。順便說一句,我上傳了一個加入到JMP文件交換,您可以使用它將您自己的BodyMedia®活動摘要和食物日誌文件導入JMP。它還包括一個獎勵加載項,可以導入CSV文件,您可以使用Chrome擴展程序從流行的MyFitnessPal食品日誌網站下載這些文件。
8月初,我出口了近50個活動摘要和50個食物日誌文件,涵蓋了從2010年10月12日到2014年7月28日的時間段。活動摘要數據保存在包含六個不同工作表的Excel工作簿中,但我有興趣從前五個導入數據:摘要,活動,用餐,睡眠和體重。您可以在其中查看其他工作表內容的詳細信息我的電子海報 。

我的大多數活動摘要Excel文件都包含四周的數據,但有些數據包含的周數較少。所有文件在第5行都有列標題,大多數文件在前四個標籤上有28行數據,儘管第五個標籤上的行數(重量)有所不同。在2013年之前,我手動將重量測量輸入到活動管理器中。2013年1月,我開始使用 Withings智能身體分析儀 scale,將重量測量無線上傳到其自己的基於Web的軟件中,並通過與活動管理器的第三方集成自動共享。
我決定在交互式導入我的數據文件兩次之後編寫導入過程的腳本,大約相隔一年。第二次交互式導入更耗時,因為我有更多的文件可供使用。由於我每天都在積累新數據,因此我的文件數量會隨著時間的推移而增長。在第二次導入之後,我格式化了我的列並將公式添加到組合數據表中,只是將它與我第一次導入的表進行比較,並意識到我忘記了幾個重要的步驟。
當我回過頭來完成我錯過的步驟時,我開始考慮腳本如何使我的所有文件的再處理變得更加簡單和快速。如果導入過程更容易,我會更頻繁地查看新數據。幸運的是,我發現即使像我這樣的新手腳本也可以編寫JSL來導入和合併我的文件。
我開始使用Source腳本(在交互式導入期間自動添加到JMP數據表)和來自在線文檔和論壇的JSL示例。我使用在文本文件導入示例中的圖案策略循環我的所有文件 SESUG 由JMP開發人員Michael Hecht撰寫的論文。作為JMP的長期Mac專家,Michael以其高質量和優雅的所有語言代碼而聞名,那麼為什麼不借用大師?
在努力將我的數據合併到一個統一的表中時,我遇到了一些障礙。我在導入之前必須處理的一個問題是Sleep選項卡上的Date列包含一個過夜範圍而不是像所有其他工作表那樣的一天,這使我無法在沒有預處理步驟的情況下直接合併它。例如,12/20 / 2012-12 / 21/2012的值表明睡眠之夜於2014年12月20日開始並於12月21日上午結束。我使用JMP公式編輯器和JMP Word字符模式函數解析了第二天的日期。

在以交互方式創建公式之後,我在我的腳本中添加了代碼,以便在JSL的幫助下輕鬆地重複這些步驟獲取腳本命令。運行命令 MyColName <<獲取腳本; 在Sleep選項卡的Date列上打印了一個JSL的密鑰片段到JMP的日誌,我將其添加到我的腳本中以自動執行此步驟。 在我的決賽桌中,Sleep列中顯示的hr:m值表示我在早上醒來之前睡了多少。
我的輸入文件中有額外的信息,我不希望將其包含在最終的JMP表中。卡路里總數,平均值和目標總結在我所有工作表的底部(上表中的第36-39行)。我在腳本中添加了一些步驟來過濾掉這些摘要,列標題上方的信息行以及空白行。總而言之,我在Discovery Discovery海報中使用的活動數據表的版本包含1,316行關於卡路里消耗和燃燒的每日數據,活動測量,睡眠和體重測量。
我的數據表還沒有完全分析。我的表中的數字列包含導入時未正確格式化的持續時間和百分比。我以交互方式將格式,缺失值代碼和建模類型添加為列屬性。我使用Date列上的Transform列功能快速將新的Date Time變量(如Year,Month,Week和Day)添加到我的表中,然後添加到我的腳本中以自動執行這些步驟。我還在表中添加了一個新的公式列(Calories Burned-Calories Consumed)來表示給定日期的卡路里缺乏/過量。
如果您以Excel格式保存BodyMedia®活動摘要文件,則可以下載我的加入從文件交換中執行點擊導入您自己的文件到JMP。此加載項支持我剛剛描述的活動摘要文件類型,保存為文本的BodyMedia®食物日誌文件,以及可以在Chrome擴展程序的幫助下從流行(和免費)MyFitnessPal導出的食物日誌文本文件。
特別感謝JMP測試經理Audrey Shull和技術作家Melanie Drake提供的腳本建議和插件測試幫助!請繼續關注我的下一篇博文,在那裡我將描述如何使用JSL自動導入BodyMedia®食物日誌文件。
我們在讀什麼量化自我統一的自我中寫道:
[|]使用JSL將ShanMed Conners將BodyMedia Fit Activity監視器數據導入JMP。我們在9月20日的“我們正在閱讀的內容”中介紹了Shannon的驚人可視化工作。她回到這裡,詳細介紹瞭如何在JMP中探索BodyMedia和MyFitnessPal數據。即使作為非JMP用戶,我也很高興找到她用來下載用餐數據的MyFitnessPal數據下載器Chrome擴展程序。[]]