<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />これはJMPブログからのこの記事のバージョンと非常によく似ています。
以前にブログ記事 「JMPディスカバリーサミット2014の電子ポスター」というトピックを紹介しました。 JMPによる個人食生活データの分析」 そして定量化自己(QS)分析プロジェクトに対する私の興味を共有しました。私のポスタープロジェクトでは、WebベースのActivity Managerソフトウェアから2種類のデータファイルをエクスポートしました。ボディメディアまた、JMPでさらに分析および視覚化するためにデータをインポート、フォーマット、およびクリーンアップするためのJMPスクリプト言語(JSL)スクリプトを作成しました。Caryでの会議でもっと聞くためにあなたが私に加わってくれたことを願っていますが、もしそうでなければ、私の電子ポスターのPDF ディスカバリーサミット2014セクションで。
今日は、JSLを使用して、活動とカロリーの要約情報を含む一連のマルチワークシートのExcelファイルをインポートおよび結合する方法について説明します。Activity Managerソフトウェアは、PDF Food Logファイルもエクスポートします。これについては、次回のブログ記事で説明します。ところで、私はアップロードしました加える自分のBodyMedia®Activity SummaryおよびFood LogファイルをJMPにインポートするために使用できるJMP File Exchangeに。また、Chrome拡張機能を使用して人気のあるMyFitnessPal食品ロギングWebサイトからダウンロードできるCSVファイルをインポートするボーナスアドインも含まれています。
このユーザーコミュニティのブログ投稿には、このブログの公開バージョンには表示されない、アドインのテストに関するメモを追加したいと思いました。 私は自分自身でたくさんのスクリプトを書きますが、これは私のスクリプトの上にユーザーインターフェースを置き、アドインの使用中に他の人が遭遇するかもしれないバグを心配する私の最初の経験でした。 私はこのプロセスの間、2人のJMPテスターとスクリプト作成の専門家、Melanie DrakeとAudrey Shullに大きく依存しました。 Melanieは私が自分のケースに合わせた簡単なダイアログのコードを共有しました。 Audreyは私のために最初のアドインテストをしました、そしてユーザー入力のより良いバリデーションと私のスクリプトにもっとエラーチェックオプションを追加することができるように私はスクリプトを細かく分割することを提案しました。 これには、ディレクトリとファイルの存在の検証、およびユーザーが既存のファイルを上書きしたいかどうかを確認するためのチェックが含まれていました。
フロリダ州の家族での休暇から帰る途中の車の中で、私は対話と台本のための以下のテスト計画を私の今までにないノートの中にスケッチしました。 その後、コンピュータの前に戻ったときに、アドインのダイアログのスクリーンショットとユーザーが実行できる可能性のある操作のいくつかを含む次のPowerPointを作成しました。私は自分のテストのどこでバグに遭遇していたのか、そしてそれらが何であったのか(赤枠内)を特定することは非常に有益であることがわかりました。 私が自分のスクリプトを修正して解決したので、それらをマークするのは満足でした。 私の非常に単純なアドインには、テストするための驚くべき数の可能性があり、複雑なソフトウェアを開発してテストするのがどれだけ難しいかという問題があります。 このエクササイズは、私たちのJMP開発者とテスターが彼らが毎日行うすべての作業にさらに感謝しています!

アドインを作成しました。 8月上旬、ディスカバリーのポスターの準備をしている間に、12/20/10から7/28 / 14までの期間をカバーする約50の活動概要と50のフードログファイルをエクスポートしました。BodyMedia®アクティビティサマリデータは、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®フードログファイルのインポートを自動化する方法について説明します。