以前にブログ記事 「JMPディスカバリーサミット2014の電子ポスター」というトピックを紹介しました。 JMPによる個人食生活データの分析」 そして定量化自己(QS)分析プロジェクトに対する私の興味を共有しました。私のポスタープロジェクトでは、WebベースのActivity Managerソフトウェアから2種類のデータファイルをエクスポートしました。ボディメディアまた、JMPでさらに分析および視覚化するためにデータをインポート、フォーマット、およびクリーンアップするためのJMPスクリプト言語(JSL)スクリプトを作成しました。Caryでの会議でもっと聞くためにあなたが私に参加できたことを願いますが、そうでなければあなたは JMPユーザーコミュニティそしてチェックアウト私の電子ポスターのPDF ディスカバリーサミット2014セクションで。(ユーザーコミュニティのメンバーシップは無料で、世界中のJMPユーザーから学ぶのに最適な方法です!)
今日は、JSLを使用して、活動とカロリーの要約情報を含む一連のマルチワークシートのExcelファイルをインポートおよび結合する方法について説明します。 Activity Managerソフトウェアは、PDF Food Logファイルもエクスポートします。これについては、次回のブログ記事で説明します。ところで、私はアップロードしました加える自分のBodyMedia®Activity SummaryおよびFood LogファイルをJMPにインポートするために使用できるJMP File Exchangeに。また、Chrome拡張機能を使用して人気のあるMyFitnessPal食品ロギングWebサイトからダウンロードできるCSVファイルをインポートするボーナスアドインも含まれています。
8月上旬に、私は12月20日から7月28日までの期間をカバーする約50の活動概要ファイルと50の食品ログファイルをエクスポートしました。活動概要データは6つの異なるワークシートを含むExcelワークブックに保存されますが、最初の5つの概要、活動、食事、睡眠、体重からデータをインポートすることに興味がありました。他のワークシートの内容の詳細はで見ることができます私の電子ポスター 。

私のアクティビティサマリーのほとんどのExcelファイルには4週間のデータが含まれていましたが、カバーされていない週もありました。すべてのファイルの5行目に列ヘッダーがあり、最初の4つのタブには28行のデータがありましたが、5番目のタブの行数(太さ)はさまざまでした。2013年以前は、手作業でActivity Managerに体重測定値を入力していました。2013年1月に、私は Withings Smart Body Analyzer 体重計をワイヤレスで独自のWebベースのソフトウェアにアップロードし、サードパーティ製のActivity Managerとの統合を介して自動的にそれらを共有します。
データファイルを対話的に2回、約1年間隔でインポートした後、インポートプロセスをスクリプト化することにしました。対話型インポートは、使用するファイルがさらに多くなったため、2回目の時間がかかりました。私は毎日新しいデータを蓄積しているので、私のファイルの数は常に時間の経過とともに増えていきます。2回目のインポートの後、最初のインポートのテーブルと比較していくつかの重要な手順を忘れていたことを確認するためだけに、列をフォーマットして結合データテーブルに式を追加しました。
私が見逃していたステップを完了するためにバックトラックした一方で、私はスクリプティングが私のすべてのファイルの再処理をどのようにもっと簡単で速くすることができるかについて考え始めました。インポートプロセスがより簡単であれば、新しいデータをもっと頻繁に見ることになります。幸い、私のような初心者のスクリプト作成者でも、自分のファイルをインポートおよび結合するためのJSLを作成できることがわかりました。
私はソーススクリプト(対話型インポート中にJMPデータテーブルに自動的に追加される)とオンラインドキュメントとディスカッションフォーラムからのJSLの例から始めました。テキストファイルのインポートの例を使用して、すべてのファイルをループしました。 SESUG JMP開発者Michael Hechtによる論文。JMPの長年のMacエキスパートであるMichaelは、すべての言語で高品質で洗練されたコードで知られています。
私のデータを単一の統一されたテーブルにまとめる作業をしているうちに、いくつかの問題が発生しました。インポートの前に処理しなければならなかったことの1つは、他のすべてのワークシートのように[スリープ]タブの[日付]列に1日ではなく夜間の範囲が含まれていたことです。たとえば、12/20 / 2012-12 / 21/2012という値は、12/20/14に始まり、12/21/14の朝に終わる睡眠の夜を示します。JMP Formula EditorとJMP Wordの文字パターン機能を使用して、2日目の日付を解析しました。

対話式で式を作成した後、JSLの助けを借りてこれらの手順を簡単に再現できるようにするために、スクリプトにコードを追加しました。スクリプトを入手コマンド。コマンドを実行する MyColName <<スクリプトを入手 [スリープ]タブの[日付]列に、JMPのログにJSLの重要なスニペットを印刷しました。これをスクリプトに追加して、この手順を自動化しました。 最後の表では、「睡眠」列に表示されているhr:mの値が、その日の朝に目覚める前にどれだけ眠っていたかを表しています。
入力ファイルに、最終的なJMPテーブルに含めたくないという追加情報がありました。カロリーの合計、平均、および目標は、私のすべてのワークシートの下部にまとめられていました(上の表の写真の36行目から39行目)。これらの要約、列見出しの上の情報行、そして空白行も除外するために、スクリプトにステップを追加しました。合計で、私が私のDiscovery Summitポスターに使用した私の活動データテーブルのバージョンには、摂食カロリー、活動測定、睡眠、体重測定に関する1,316行の日々のデータが含まれていました。
私のデータテーブルはまだ分析の準備ができていませんでした。私のテーブルの数値列には、インポート時に正しくフォーマットされなかった期間と割合が含まれています。インタラクティブに列プロパティとしてフォーマット、欠損値コード、モデリングタイプを追加しました。Date列のTransform列機能を使用して、Year、Month、Week、Dayなどの新しいDate Time変数をテーブルにすばやく追加し、次にスクリプトに追加してこれらの手順を自動化しました。また、表に新しい数式列(消費カロリー - 消費カロリー)を追加して、特定の日の私のカロリー不足/過剰を表します。
BodyMedia®Activity SummaryファイルがExcel形式で保存されている場合は、私のWebサイトからダウンロードできます。加える File ExchangeからJMPへのあなた自身のファイルのポイントアンドクリックのインポートを実行するために。このアドインは、先ほど説明したActivity Summaryファイルタイプ、テキストとして保存されたBodyMedia®フードログファイル、およびChrome拡張機能の助けを借りて人気の(そして無料の)MyFitnessPalからエクスポートできるフードログテキストファイルをサポートします。
スクリプトの提案やアドインのテストの手助けをしてくれたJMPのテストマネージャAudrey Shullと技術執筆者Melanie Drakeに感謝します!次回のブログ投稿では、JSLを使用してBodyMedia®フードログファイルのインポートを自動化する方法について説明します。
私たちが読んでいるもの数量化された自己数量化された自己書きました:
[ - ] Shannon ConnersによるJSLを使用したBodyMedia Fit ActivityモニターデータのJMPへのインポート。私たちは9月20日のワーキングリーディングの第2版で、Shannonの素晴らしい視覚化作業を特集しました。彼女はここでJMPでBodyMediaとMyFitnessPalのデータを探索する方法についての徹底的なハウツーで戻ります。JMPを使用していないユーザーであっても、私は彼女が彼女の食事データをダウンロードするのに使用していたMyFitnessPal Data Downloader Chrome拡張機能について知って喜んでいました。[â]