私は終わった私の前のブログ記事私のJMP Discovery Summitプロジェクトでは、BodyMedia®Activity Managerアプリで収集した約4年間の食品ログで食品名の重複の程度に気付いたときです。私は私が私が私の食糧ログに加えるべき正しい項目を見つけるのにキーワード検索を使用することの別様に調製された品種を食べたことを知っていたが、複製もまた人工物であった。 特定の商品を検索するために使用したキーワードと、特定の食事でログに記録するために選択した一致する商品の種類が異なるため、よく似た食品には異なる商品名を選択することがよくありました。
最終的に、私は私が関連商品から食べたカロリーの数をまとめ、そしてまた食品のカテゴリー別に食べたカロリーを合計したいと思いました。賢明な最初のステップは、私のデータテーブルで重複する食品名の数を減らすことでした。私は最小限の作業で新しいデータを処理できるように、できるだけ簡単に、そしてもちろんスクリプトを介して再現可能な食品の再コード化プロセスを望んでいました。
私はを使って調べた JMP 11類似の食品名を単一の清潔な値に統合するためにプラットフォームを書き換えます。私が記録し始める前に、私のデータテーブルは1,859のユニークな食品名を含んでいました。食品名はRecodeウィンドウにアルファベット順に表示されていたので、アルファベット順にリストされていない類似の食品を見つけるのは難しいことがわかりました。たとえば、異なるブランド名の下にリストされているほぼ同一のアイテムの名前を変更したい場合は、最初に自分のアイテムリストに散らばっている関連アイテムをすべて検索する必要がありました(例: "CHIPS AHOY!Chewy Chocolate Chip Cookies"、"Cookie、Chocolate Chip、コマーシャル、12%-17%脂肪、""ジェイソンズデリチョコレートチップクッキー、"ピルズベリーチョコレートチップクッキー、冷蔵生地")そしてそれらを一般的な洗浄された値(例えば "クッキー、チョコレートチップ")に改名する。すべての関連項目を見つけるために、検索機能を使用してデータテーブルを検索するか、データフィルタの赤い三角メニューの下にある検索を使用しました。

すべての関連アイテムを見つけたら、Recodeウィンドウでそれらの場所にスクロールし、整理したアイテム名を貼り付けました。データセットを調べていたときに、変更を保存せずに誤ってRecodeウィンドウを閉じました。私は自分の仕事を繰り返す代わりに、自分の商品をより早く分類して新しい商品を自分の食品グループに簡単に割り当てることができるようにすることを望んだ代替戦略を探ることにしました。
私は自分の食品名からユニークな単語のリストを抽出するために(JMPカテゴリープラットフォーム起動ダイアログの複数タブにある)フリーテキスト機能を使いました。私はリストを見直して一般的または非特定の単語を削除し、残りの単語を食品カテゴリに入れました。次に、JMPのPatMatch関数を使用して、JSLループを使用して食品名の中のこれらのキーワードをスキャンしました。キーワードが見つかった場合は、その単語のカテゴリを、[Multiple Response]列プロパティで保存された列のカンマ区切りのリストに追加しました。
最初はこの方法で新しい項目を分類するのが簡単になると思いましたが、スクリプトですべてのキーワードですべての項目を検索するには時間がかかります。分類されたすべての食品を確認し、それらが含まれているキーワードに基づいて実用的なカテゴリに分類されていることを確認するには、さらに時間がかかりました。処理されたテーブルを調べていたところ、特定のキーワードに一致しないキーワードが多いことに気付きました。一例では、"Sea Chunk Light Tunaのチキン"は、肉(キーワード:chicken)と魚(キーワード:fish)の両方の食品カテゴリに一致しました。Coffeemate Non-Dairy Creamerにキーワードcoffeeが含まれていたため、CoffeeMilkグループに誤って割り当てられていました。 パターンマッチの前に元の名前をいくつか修正し、マッチ後に他のカテゴリリストをクリーンアップする必要があることに気付きました。スクリプトを使用して各ステップを再現する必要があるため、Recodeを使用してカスタムJSLを作成するか、JSLをクリーンにしたデータを生成する必要がありました。そこで、元のRecode戦略に戻ることにしました。
その頃、新しく雇われたJMP開発者James PreissがRecode for JMP 12を改良し始めました。私は自分のフードログRecodeのユースケースをJamesと共有し、私の課題の多くは彼のやるべきことリストに既にある顧客の要求と並んでいました。Recodeの更新がJMP 12の毎日のビルドで表面化し始めるとすぐに、私はそれらを私のフードログファイルでテストし、私のアイテムリストのサブセットをJamesとRecodeのテスターRosemary Lucasと共有しました。Recode、Data Filter、Find / Replace、およびJSLスクリプティングの組み合わせを使用してJMP 11で手動で行ったステップの多くがJMP 12のRecodeに統合されていることに興奮しました。
実際、Recodeプラットフォームの更新が完了するずっと前から、キーワードマッチの問題についてスクリプトを作成するのに費やしていた時間よりもはるかに短い時間で、自分の食品リストからクリーンでグループ化されたアイテム名のテーブルを作成できました。それから私はそれぞれのきれいにされた食料品名のためのカテゴリーを加えて、そしてオリジナルの品名に加わることによってそれらを私の食料ログデータテーブルに併合しました。Recodeを使用すると、テーブル内の固有の名前の元の数(1,859)を半分に減らすことができました。これで、新しいフードログファイルをインポートするときに、Recodeに戻って新しいアイテムを分類し、アイテム名/カテゴリテーブルを更新し、それを自分のデータとマージして、続行する準備が整いました。
JMP 12は2015年3月まで発売されないので、Recodeプラットフォームの多くの新機能についてわざと漠然としていることを認めます。私はRecodeの更新が大好きです、そしてあなたもそうするでしょう!(3月が近づくにつれて、およびソフトウェアが入手可能になった後のRecodeに関するより詳細なブログ記事を探してください。)
次回のブログ投稿では、私がDiscovery Summitポスター用に作成したグラフのいくつかを紹介し、それらを使用してそれらをどのように改善したかを示します。 Xan Gregg Graph Builderプラットフォームの作成者であり、JMPのData Discoveryグループのリーダーです。
私のポスターに関するより多くの背景と定量的自己(QS)データ分析への私の興味については、以下をチェックしてください。最初のブログ投稿このシリーズでは。 その後の投稿は私がどのようにしているかについての詳細を共有します Excel形式のアクティビティサマリファイルをエクスポートしましたそしてフードログファイル BodyMedia®Activity ManagerソフトウェアからそれらをJMPにインポートしました。私はカスタムJSLスクリプトを使用して、2つのJMPデータテーブルを作成しました。1つは1,316行のアクティビティデータ、もう1つは34,432行の食品を4年間で記録したものです。私はJMPを書きました加える無料のMyFitnessPal WebサイトからこれらのデータタイプとCSV形式のフードログファイルをサポートします。