皆さん、ようこそ。ネイサン・クラークです。IDEXX Laboratories で働いています。JMP を使い始めて22年になります。今日はテーブルメニューについてお話します。テーブルメニューは、JMP の最も優れた機能の一つだと感じています。(言葉遊びですが)データ操作や調整、そして様々な分析を容易に行える強力なツールだからです。テーブルメニューを使いこなせれば、コピー&ペーストでデータを移動するといった昔ながらのやり方よりも、はるかに高度な分析が可能になります。
今日は、私がテーブルメニューをどのように使っているか、長年使ってきた中で皆さんが慣れるまでに陥りがちな落とし穴、そしてその過程で役立つヒントやコツについてお話ししたいと思います。それでは、早速始めましょう。皆さんのお気に入りの大きなクラスに、私がいくつか変更を加えてみます。まずはテーブルメニューの一番上にある「概要」から始めましょう。
「要約」は、ご想像のとおり、要約統計量のためのものです。開くと、いくつかのオプションが表示されます。身長などの応答変数を選択した場合は、平均値や標準偏差を計算できます。表メニューのすべての項目について、プレビューがポップアップ表示されます。これは素晴らしい機能です。この機能がここにあることの素晴らしさは、言葉では言い表せません。表に表示される内容をすぐに確認できるからです。
今、サマリーが表示されていますね。42行あり、平均値と身長が1つずつあります。ここでは他の要素は考慮されていません。これは、全データの平均と標準偏差を表しています。これを分割したい場合は、グループ化セクションにドラッグするだけです。これで、男性と女性の平均値と身長が取得できました。
これが要約機能の主な目的と言えるでしょう。「OK」をクリックすると要約が表示され、その後、上の欄にある「ホットスポット」列から統計情報を追加できます。もし何か忘れていたことに気づき、体重の平均値も追加したい場合は、「OK」をクリックすれば追加されます。
これは本当に素晴らしいですね。よく使っています。ここにロックされている箇所があるので、ここに注意書きしておきます。これは編集できないことを意味します。別の数字を入力しようとすると、ここに通知が表示されます。私はサマリーや要約統計を取得するためにこれを使用していますが、実際には少し違う用途でよく使っています。このボタンは閉じます。もう一度開いて、いくつか他の点について説明したいと思います。
先ほど、これらの列をロックする方法について触れましたね。このチェックボックスをオフにすると、これらの列はロックされなくなりますが、データへのリンクも解除されます。これにより、後ほど説明する内容が簡単になります。
このセクションでは、「テーブル」メニューでよく見かける2つのボックスについても触れておきます。「ダイアログを開いたままにする」です。「OK」をクリックした後も、このボックスは開いたままにしておきます。こうすることで、様々なアイデアをすぐに試すことができます。そして、ソーステーブルにスクリプトを保存すると、作成したテーブルにスクリプトとその作成方法が保存されるだけでなく、そのスクリプトが元のテーブルのこの領域に保存されます。これは、1バージョンほど前にリリースされた非常に優れた機能だと思います。
では、サマリーをもっと深く活用する理由についてもう少し詳しく説明しましょう。これは、データを深く理解し、様々な人口統計を細分化するために役立ちます。例えば、ここで「性別」を選択してグループ化するだけで、統計情報には何も変更しません。それでも表が作成されます。この表には、内訳と行数が表示されます。「OK」をクリックすると、ここに表が表示されます。これはリンクされているため、クリックしていくと、今回関心のある項目がすべて選択されます。
これは、データを詳しく調べてサブセット化するのに最適な方法です。これについては後ほど説明しますが、データの他の側面を理解するのにも役立ちます。ここでもう少し深く掘り下げてみましょう。名前で表示すると、性別とそれに関連付けられた名前が分割されていることがわかります。お気づきのとおり、N行のうちいくつかは実際には1行です。
要約の中で触れますが、これはこれから説明する他の多くのプラットフォームにとって非常に重要です。特に、データに何かおかしい点があり、トラブルシューティングが必要な場合に重要です。これが「一意性」という考え方です。
どのようなテーブルを扱う場合でも、どの列が様々な組み合わせで様々なレベルの一意性を持つのかを常に特定できる必要があります。これら2つを削除すると、まずはここから話を進めます。一般的にかなり一意な識別子であると思われる名前を選択すると、ここで名前でグループ化できます。
スクロールしていくと、ほとんどが1つのデータであることがわかります。下には、RobertとPatがそれぞれ2行ずつ関連付けられています。名前だけではこのデータセットを一意にするには不十分なので、列を追加する必要があります。性別を追加すれば、この感覚を掴めるかもしれません。
まだN行が1つずつあるので、一意性は確保されていますが、ここにはまだ2人のロバートがいます。男性で、彼には2つの行が関連付けられています。つまり、必要な一意性レベルに達するには、さらにもう1列追加する必要があります。年齢を下にドラッグします。これで、データが完全に一意になり、横方向全体で1つになっていることがわかります。
プレビューは、これを確認するのに最適な方法です。プレビューにぴったり収まるデータが他にもある場合は、「OK」をクリックするか、「ダイアログを開いたままにする」を使用して、いつでも操作を続けることができます。データを扱う際には、何がユニークであるかを理解することが非常に重要です。また、最初からユニークでない場合は、列を追加してユニークにすることも必要です。これは、これから説明する他の方法を試す際に重要になります。
ところで、サブセットプラットフォームに進みましょう。これは、データのサブセット化を行うためのツールです。すべての行、選択した行、行によるフィルタリングが可能です。また、元のデータテーブルへのリンクも設定できますが、ここではもう少し速く簡単にできる別の方法を紹介します。JMPは、テーブルに実際に何が含まれているかに基づいて、作業を支援します。いつものように、プレビュー機能も役立ちます。
ここに移動すると、M をクリックして右クリックし、「対応するセル」を選択できます。すると、すべての M が選択されます。次に、「テーブル」と「サブセット」に移動すると、自動的に… 選択した行を対象にしたいと仮定します。すべての列を対象にすることも、選択した列を対象にすることもできます。現在、性別は選択列になっていますが、すべての列のままにしておきます。
数式のコピーと非表示は、データを整理するのに役立ちます。数式を評価するのは、本当に必要な場合のみにしてください。「OK」をクリックすると、サブセットが作成されます。このサブセットはデータにリンクされていません。ここをクリックして操作できます。これがスタンドアロンのテーブルです。
リンクされたサブセットが必要な場合は、上の「サブセット」に移動できます。「リコール」をクリックして、「OK」をクリックします。これでデータにリンクされます。しかし、これは私が本当にやりたいことよりも数回クリックする手間がかかります。私は通常、右クリックして「対応するセル」を選択し、必要な選択範囲に移動します。これには様々な方法があります。下を見ると、23行が選択されていることがわかります。ここで右クリックすると、データビューに移動できます。すぐにリンクされたサブセットが表示されます。
選択した列のみを表示するオプションはありません。このデータビューでは常にすべての列が表示されますが、私はこれを頻繁に使用しています。例えば、ここで選択したデータセットの上部に行があり、下部に行があり、それらを並べて表示したい場合、データビューを使用すると、すぐにそれらを確認して、何が起こっているかを把握できます。
この機能は大変気に入っています。よく使っています。ただし、データビューを使用する場合は、データセットにリンクされているため、データビューで変更を加えると、その変更が反映される点にご注意ください。「Tim」がハイライト表示されていますが、「M」を小文字の「M」に変更すると、テーブル自体にも反映されます。データビューを使用する場合はご注意ください。独立したサブセットのように扱うと、実際にはメインデータが変更されてしまう可能性があります。
これを活用すれば、様々なメリットが得られます。例えば、表にないMの混在した文字列をすべて小文字のMに変更する必要がある場合、最初のMを小文字のMに変更し、右クリックして表の最後まで入力すれば、すべて小文字のMになります。これは、大量のデータを修正したり、別の方法でデータを拡張したりするのに非常に便利な方法です。データを使用したり、データを操作したりする際に注意すべき点です。データに関わり、様々なことを行う際に、非常に役立つ機能です。
ソート機能はまさにその名の通りです。強力でありながらシンプルで、まさに素晴らしいプラットフォームです。ソートが可能です。では、ここで名前でソートしてみましょう。すると、デフォルトで昇順でソートが開始されます。クリックすると、降順に切り替えることができます。ここに項目を追加してソートすることもできます。昇順または降順でソートすることも可能です。必要な数の列でこの操作を実行できます。「OK」をクリックすると、JMPが新しい列を作成します。
これは本当に便利です。特に大規模なデータセットの場合は、どのように並べ替えたいかが分かっているはずです。見た目が重要であれば、希望通りの見た目になります。また、並べ替えを台無しにして、元のテーブルに戻るのに苦労するのも避けたいです。この方法だと、完全に別のテーブルが作成されます。
多くの場合、私はこうやってテーブルを見て、「これが私が見たいものなのか?これが私の最終目的なのか?」と自問します。そして、このテーブルを閉じます。もしこれが私の望むものなら、すぐにソートメニューに戻ります。そして、リコールして、テーブルを置き換えます。こうすることで、メインのテーブルをソートし、テーブルの数を最小限に抑えることができました。
そういうオプションがあるのは本当に素晴らしいですね。私もテーブルを作る時によくそうしています。その後、メインテーブルに何をしているかを確認するために、テーブルを元に戻して置き換えます。特に、列数が多く、データが雑然として見づらくなってしまうのは避けたいので、そのようにしています。
次はスタッキングについて見ていきましょう。スタッキングは本当に便利な機能です。実はここに特別なテーブルが用意されていて、早速使ってみましょう。スタックとは、その名の通り、列を積み重ねる機能です。「テーブル」メニューの「スタック」メニューを開くと、3つの列をまとめて積み重ねることができます。
ここで「OK」をクリックして、表示してみましょう。ラベル「Read 1」、「Read 2」、「Read 3」と、それぞれの元の列または元の値にあった関連データが表示されています。これは素晴らしいですね。
横方向に大量のデータがあり、それを縦方向に並べる必要がある時に、よくこれを使います。Stackはこれらすべてを、テーブルの構成に関係なく実行してくれるので、とても便利です。テーブル内の適切な関係性も維持してくれます。ただし、このデータは少し特殊で、私がよく使う機能を利用しています。異なるグループに分かれたデータがあり、それらをすべて特定の方法で積み重ねる必要がある場合です。
この場合、405、357、680という3つの波長のデータがあり、それぞれにリードが関連付けられています。リードを単にスタックするのではなく、正しい波長との関連付けを維持する必要があります。JMPでは、スタック機能を使ってこれを実現できます。スタックメニューを開きます。
これら6つの列をすべて積み重ねると、JMPがそれらをきれいに整理してくれます。プレビューでこれまでの作業内容を確認できますが、JMPはまだそれらをきれいに整理していません。先ほどお見せしたように、すべての列を2つの列に積み重ねてしまいましたが、これはこのデータに必要なものではありません。
下のボックスにチェックを入れ、「複数系列のスタック」を選択します。これは非常に便利です。JMP の変更点のいくつかは既にご覧のとおりです。デフォルトでは 2 つの系列が作成されます。ここで必要なのは 2 つの系列です。波長を表す列と、それらの波長に対応するデータ値を表す列が必要なためです。これが 2 つの系列の元になります。3 つのセットが 3 つある場合、3 つの系列でこれらの情報を取得する必要があります。
今は自信たっぷりに複数シリーズのスタックについて話しているつもりですが、10回中9回はスタックを作成しようとしてボタンを間違えてしまい、データが思い通りにならないことがあります。いろいろ試してみて慣れてください。やり方を覚えるよりも重要なのは、データがどのように表示されるべきかを認識することです。そうすれば、何かがうまくいかない場合は、実際に試してみて調整することができます。
よくある選択肢の一つは、ここにある「連続」ボタンです。このボタンは、JMPにデータテーブルではなく、このウィンドウ内での列の並び方を指定します。これは、私がこれらのデータを見ているときによく忘れがちな点です。波長1、波長2、波長3、そして3つの読み取り値があり、これらは互いに接しています。2つの系列で、これらは互いに接しています。つまり、これは連続したデータです。
プレビューを見ると、JMPが自動的に修正して、少し普通の見た目になっているのが分かります。もし波長1、読み取り1、波長2、読み取り2、波長2、読み取り3、と並んでいたら… 実は、これを削除して、波長1、読み取り1、2、2、3、3と並びます。連続するボックスにチェックが入っていると、データの見栄えが良くないので、このボックスのチェックを外します。このウィンドウでのデータの構成と、このボタンを使用するかどうかは、必要なデータにアクセスするために互いに関連しています。
「OK」をクリックします。これで、このデータはかなり良い状態になっていることがわかります。サンプル1のようにスポットチェックをしてみましょう。9.83と141があります。良さそうです。他のサンプルも必ずスポットチェックします。この作業が終わったら、この列は必ずしも必要ではありません。この波長の名前を変更し、この列を削除します。この「Reed」または「Read」に「A」を付けて名前を変更し、右クリックしてこの列を削除します。これで、積み重ねられたデータが適切に整理されました。
スタック機能があると本当に便利です。メニューでいくつか便利な機能をご紹介します。まず、開始前にデータとラベルの名前を変更できます。ここにある列をすべて削除するか、すべて残すか、あるいは一部だけを選択するかを選択できます。また、データとラベル列を配置する場所を指定できるので、データの見た目を思い通りに調整できます。
次に、分割について説明します。分割はスタックの反対です。これは最も強力ですが、慣れるまで最も面倒なプラットフォームの一つです。ここでは、その理由と、表示したいデータに注意する方法を説明します。重要なのは、これらが何を表しているかです。分割列、つまり分割したい列、つまりセルに保持したい応答データが実際に含まれている列です。今回は「読み取り」を使用します。
「分割基準」は、リードを個別に分割する列です。この場合は波長です。プレビューでデータを確認できます。テーブル内のデータ量に応じて、「すべて保持」または「すべて削除」を選択できます。「OK」をクリックすると、JMPがかなり良い結果を出していることがわかります。357は0.83、405は9、141です。JMPはまさに私たちが求めていた結果を出してくれたようです。JMP、素晴らしい仕事ですね。
非常に重要な情報が抜けているため、分割が簡単に思えますが、データが少し複雑になると、ユーザーが見たくないデータが表示され始め、正しく分割しようとして大きなフラストレーションを感じることになるため、問題が発生します。
これは、要約のところでお話しした、データのユニークさ、つまり、様々な回答を得るためにデータのユニークさを構成する要素を理解すること、という話に戻ります。今回のケースでは、これらはすべてサンプルごとにグループ化されているため、サンプルが明らかにユニークな選択肢となります。JMPは魔法のように、いや魔法とは言いませんが、JMPの内部アルゴリズムによって、データの整理方法に基づいて私が望むような表示方法を正しく理解してくれたのです。
しかし、そうではないとしましょう。ここにランダムな数値を入れた列を挿入し、これらの数値で並べ替えて、これらの列の並びを完全に分離します。分割をもう一度開いて「リコール」をクリックすると、これらの項目がここにあることがわかります。ただし、ワイドJMPにはこれらの情報が自動的に含まれていることが分かります。99.63ですが、その下には128のような値があります。
明らかに、この状況と必ずしも一致しない点があります。これがフラストレーションの原因です。原因を理解するために、多くの作業が必要になることもあります。そこで、グループ化の仕組みが役立ちます。分割結果に基づいて、一意性を生み出すために必要なすべての列でグループ化します。
この場合、サンプルごとにグループ化すると、突然、すべてが正しい状態に戻ります。JMPは、この表のこれらの測定値は本質的に関連しているため、サンプルごとにグループ化する必要があることを明示的に認識できるからです。もしこれが大きなクラスだとしたら、その一意性のために以前に調べた名前、年齢、性別になります。
データの複雑さによって結果は異なりますが、常にそのレベルの一意性を実現できることを念頭に置いてください。分割時にグループ化を過剰に行うことは、今のところありません。関係する列が分かっている場合は、グループ化によって冗長性が過剰になる可能性があっても、遠慮なく追加してください。グループ化を過剰に行い、一意性を維持する方が、グループ化を不足させて情報が欠落するよりも効果的です。
分割を行う際に、成功度の指標として注目すべき点の一つは、行数です。300行のデータから始めて、データが比較的バランスが取れていて、各サンプルに3つの波長がある場合、分割を行うと約100行になるはずです。行数がおかしな場合は、JMPが最善を尽くしたものの、期待通りの結果を得るのに必要な構成を正確に見つけられなかったことが原因である可能性があります。
これは、おそらくグループ化がうまくいっていないことを示しています。この点に注意を払い、データが正しく表示されているかどうかを確認するために活用しましょう。1万行ものデータをすべて抜き打ちチェックする必要はありません。まずは2、3行チェックして、納得のいく結果を得てから、次のステップに進むことができます。こうしたことを繰り返していけば、分割は自然と身につき、JMPでの日々の作業で非常に効果的に機能するようになります。
転置については、時間の関係で簡単に説明します。あまり使わないからです。よく使う同僚に何人か会ったことがありますが。基本的に、転置とは、このように整理されたデータ全体をひねり回すことができる機能です。これはある程度便利ですが、私はあまり使いません。幸いなことに、私のデータは全体的にそれほど乱雑に整理されていない場合もあります。
ダイアログをお見せしたいのは、このラベルとbyによって、一意性とグループ化がここで重要になるからです。これは、特定の通話問題を転置する際に、JMPにデータをどのように整理する必要があるかを伝えるのに役立ちます。繰り返しますが、データがどのように一意に整理されているかを理解することで、このプラットフォームをより強力に活用できるようになります。
次は結合です。結合も非常に優れた機能で、非常に強力です。いくつか機能について説明した後、例を見てみましょう。結合を開くと、まずこれが結合元のテーブルです。結合先のテーブルはここです。ここで結合先のテーブルを選択すると、ここが処理の対象となります。いくつかの列が表示され、ここには結合方法を指定するオプションがあります。
実際に、ここで変更した大きなクラスに戻ります。拡張された大きなクラスである別のテーブルがあります。基本的に、名前、年齢、性別など、他にもたくさんの情報がありますが、ここには心拍数とBMIがあります。これらの情報を結合したいのです。元のテーブルに戻り、「結合」を選択します。これが私の大きなクラスです。これを拡張した大きなクラスと結合します。デフォルトでは、列の一致に基づいて結合されます。おそらく、結合の99.9%は列の一致に基づいて行われるでしょう。次に、JMPに何を一致させたいかを伝えます。
これは、様々なレベルのユニークさ、つまり、どの階層でユニークさを結合するかという問題に戻ります。両方の列の名前を選択し、「一致」、「年齢」をクリックすることもできます。名前が同じである必要はありません。JMPに、一致させるべき名前を指定しているのです。物理的な名前とは全く関係ありません。
プレビューを見ると、少し奇妙で、もしかしたら面倒な動作をしていることに気が付くでしょう。実際に列が作成されています。2025 discovery mod big class という名前です。他の列でも同じようなことが何度も見られます。これで、すべての列名が大きく、途方もなく大きくなっています。これは結合後にデータを再確認するのに便利ですが、修正するのは面倒です。
JMPには、これを解決する機能があります。「同名列のマージ」です。同名列をマージする際に「一致フラグ」のチェックを外すと、同名列が統一感のある形で結合されます。大文字と小文字の違いで「name」と「name」が技術的には異なる場合でも、JMPはこれらが同一であると認識して結合していました。「同名列のマージ」にチェックを入れると、「一致フラグ」もオンになります。これにより、テーブル間の整合性を確保しながら、状況に応じて適切なマッチングを行うことができます。
下の方に、同じ名前の列をマージして一致フラグを設定するという項目があります。特に最初の結合では、メインテーブルと幅テーブルから一致しない列も必ず含めるようにしています。「OK」をクリックします。なぜこの方法が好きなのか、その理由を説明します。これは、データが適切に整理されているかを再確認するのに適した方法だからです。
マッチフラグの列があります。これを展開すると、「メイン」と「幅」の両方が表示されます。両方を開いて下に進むと、これは元のテーブルと2番目のテーブルの両方に存在していた情報を表しています。元の身長と体重に加えて、心拍数とBMIも表示されています。
メインとなる項目がある場合は、ここですべて選択してください。これは、最初の表には存在していたものの、2番目の表には一致しなかった項目です。身長、体重は入力されていますが、BMIに心拍数が含まれていないことがわかります。
幅は正反対です。2番目の表にはあったのに、1番目の表には足りないものがありました。このようにデータを見るのは、足りないものが本当に足りないのかを二重チェックできるので気に入っています。
今回のケースでは、名前は112個ありました。最初の表には42個しかありません。100%一致することは不可能です。一致しないものがあるため、幅にばらつきがあることは全く問題ありませんし、理にかなっています。同様に、これらの名前の中には、追加の指標となる拡張リストに含まれていないものもあるかもしれません。
mainとwidthは、少なくとも一般的な概念としては、ここでは問題ありません。そして、両方が互いに合う場所で整列し、期待通りの結果になるかを確認できます。実際のデータでこれを実行する場合、これが非常に役立つと思うのは、例えば実験を実行しているときに、マシンで何かを実行しているときに、それと相関関係にある実行シートやメモ、例えば実行IDなどがある場合です。
一緒に照合する場合、それは非常に具体的で異なることを意味します。マシンから出力されたデータがあるのに、ランシートにその情報がない場合、あるいは、マシンから出力されたデータがないランの情報がランシートに記載されている場合などです。エラーなどの場合は、そのように解釈できるかもしれませんが、マシンでIDを入力する際の転記ミスなど、他の原因による可能性もあります。
より大きなデータセットでこれらの結合を実行し、データが一致する場所と一致しない場所をすぐに確認できることは、迅速に分類して識別できるという点で、絶対的な変革をもたらします。
ここでも、行数を見ることがもう一つの指標です。42行です。もしすべてが完全に一致していれば、行数は42行で済むはずです。しかし、この表に含まれていた幅と含まれていなかった幅、そしてメイン行があるため、実際にはもっと多くの行数になっています。これを活用することで、問題があるか、さらに詳しく調べる必要があるかを認識するのに役立ちます。
最後に、この結合を行う際に少し注意点があります。同じ名前の列があるものの、実際には表す情報が異なるという状況があります。ここでは、簡単にするために年齢だけを扱い、この年齢がすべて89になるようにします。何らかの理由で、このテーブル89は年齢に関する情報を表しており、すべて同じ値になります。
この結合部分を読んでいくと、なぜかリコール時にプレビューが同じように表示されないのはなぜか分かりません。「OK」をクリックします。ここで、年齢がいくつかのケースで上書きされているのが分かります。実際には上書きされていませんでした。これは良い兆候です。これは新しい変更なのか、それとも他のケースでのみ修正されているのか、気になります。
これは以前にも経験したことがあり、状況によっては上書きしてしまうことがあります。JMPはこの点を改善しており、今回の例からもそれが明らかです。しかし、もし注意を払っていなければ、再度二重チェックを行うようにいたします。
これで問題の一部は解決したようですが、注意が必要です。私のデータはどこに行ったのか気になります。これは別の問題なので、後で対処します。特に重要なのは、他のテーブルによって年齢が上書きされる可能性があることです。マシンデータにフルタイムスタンプが付いているのに、ランシートの日付が実際には走行した日付になっている場合などによく見られます。そのため、一部のデータが上書きされる可能性があります。
これは本当に注意が必要なことです。なぜなら、多くのステップを経て、このような事態が起きるのは避けたいからです。最終的に起こるのは、データに時々表示されるはずだったデータが、上書きされてしまって何も表示されなくなる、あるいは今回のケースのように、個々の年齢が表示されるはずだったデータが、突然全員が80代になってしまう、といった状況です。
これは効率性とワークフローに悪影響を及ぼします。特に、問題がどこで発生したのかを突き止めるために7ステップも遡らなければならない場合はなおさらです。これを事前に把握しておくことで、より効果的な対応が可能になります。この場合の最も簡単な解決策は、これがリスクであるとわかっている場合は、列名を更新するか、重要かどうかに応じて完全に削除することです。
なぜこんなことになったのか、今になって気づきました。たった今、この項目を更新したばかりだったからです。リコールした際に、年齢が一致していたのですが、実際に年齢を変更したのです。これからその情報を削除します。これで、両方のアカウントの一部で上書きが行われていたことがわかります。最終的に、これが問題の原因となる可能性があります。簡単な修正方法は、名前を変更するだけです。全員参加してリコールしてください。すると、一部のアカウントでは年齢が欠落しているのがわかりますが、他のアカウントでは年齢が確認できます。そして、他のアカウントでは年齢が上書きされていないことを示すために、age_が表示されます。
それが、その間違いを直す方法です。私は何度も、多くの場合、偶然に、その間違いに見舞われました。もうその間違いはしません。ただ、間違いを見つけて修正するのが早くなっただけです。その間違いを犯しても、自分を責めないでください。慣れるには時間がかかりますし、最終的には、間違いを犯さなくなることは滅多にありません。ただ、間違いが起きた時に、それを修正する能力が上達するだけです。
次はUpdateです。Updateは素晴らしいツールです。正直に言うと、初めて登場した時は長い間、好き嫌いの激しい関係でした。それはUpdateではなく、私自身のせいでした。Updateが前提としている点に問題があったからです。その点に注意を払わないと、ひどい目に遭う可能性があります。具体的には、先ほどお話しした上書きの件のように。このページを元に戻して、実際に…
どうやら、すべて実行した時にこれをやったようですが、これで完了です。他の年齢層が揃っているところに戻りましょう。Updateは実際には結合ですが、テーブルを作成するわけではありません。Updateに進み、基本的な設定は同じです。今度は、拡張された大きなクラスと結合します。名前、年齢、性別でマッチングを行います。
この段階では、プレビューからも少し分かりますが、JMPはいくつかの仮定を立てています。内部結合のみを行うため、どちらの表にも欠損値は含まれません。メイン表の内容とのみ一致します。
第二に、同名の列はデフォルトで結合されていました。これに慣れていないと、ここで問題が発生する可能性があります。特に、更新の仕組みに慣れ始めた頃、私自身もこの問題に悩まされました。恥ずかしいほど長い間、データ内でこの問題に気づかず、後から修正しなければなりませんでした。
JMPには、それを前提として、作業を少し楽にするための追加機能がいくつかあります。大量のデータがある場合や、上書きされたくないデータが上書きされるのではないかと心配な場合は、更新テーブルからどの列を取り込むかを制御できます。「選択」を選択すると、例えば心拍数やBMIなどのみを選択できます。そして、結合に含まれていない列が上書きされるリスクを回避するため、これらの追加列は一切追加されないようにします。
また、ここではメインテーブルに列を配置しています。何も選択せずに、このハードストップで上書きを止められます。あるいは、どちらの場合も選択を許可して上書きを制御することも可能です。Update の使い方を学ぶと、これは非常に便利な機能ですが、注意点もあります。例えば、これを実行すると、このテーブルに BMI が追加されます。これでメインテーブルが変更されました。もしこれが目的ではない場合、この特定のユースケースでは Update は適していないかもしれません。
しかし、JMP に慣れて上手になるにつれて、特に JMP に飽きてきて、作成したすべてのテーブルを追跡したり、そのテーブルがどこから来たのかなどを把握しようとしたりするときに、テーブルの数を増やさずに減らしたいという要望がよく見られます。
テーブル数を最小限に抑えるためのちょっとした工夫は、非常に役立ちます。今回のケースでは、Update は特に3つか4つのテーブルがある場合に非常に効果的でした。別のテーブルには、人に関する別の指標が格納されていました。これらのテーブルをそれぞれ個別に結合する必要がある場合、結合のためにさらに3つか4つの新しいテーブルを作成することになります。Update を使えば、これらすべてを1つのテーブルにまとめることができます。
ここでは触れませんが、機会があればぜひ調べてみてほしいのが、仮想結合です。これは複数のテーブルを実際に結合することなく結合できる機能です。これは本当に素晴らしい機能です。JMPの社員などによるプレゼンテーションがこれまでに何度か行われており、さらに詳しく説明したウェビナーもいくつかあるはずです。時間がある時に試してみると、とても楽しい機能です。Update はメインテーブルに結合してくれるので、とても便利です。
次はもっとシンプルな「連結」について見ていきましょう。基本的に、連結とはテーブルを一つずつ積み重ねていくことです。
まさにその通りです。実は、この検出モジュールを使って、連結(concatenate)を実行できます。連結したいテーブルをすべてリストアップするだけです。ここに拡張された大きなクラスを追加したい場合、それらは互いに重なり合って配置されます。テーブル数を最小限にしたい場合は、最初のテーブルに追加することもできます。
ソース列を作成することもできます。特に別のテーブルを作成する場合は、データの取得元を制御できるため、これを実行することをお勧めします。「OK」をクリックすると、データが更新され、データが重ねて表示されます。どの行がどのテーブルから取得されたかを正確に把握できるため、非常に便利です。
連結でつまずくことが多いのは、データが思った通りに見えない、あるいは間違った場所にデータがあるといった場合です。今回の場合は、これをメトリックと呼ぶことにします。というか、正確には…同じことを別の言い方で表現するだけでしょうか。
連結すると、ここに2つの列が表示されます。これは明らかに異なる列の例です。しかし、JMPは、少なくとも私がこれまで見てきた限りでは、大文字と小文字の区別やタイプミスなど、データの整理を乱す可能性のある要素を気にします。例えば、命名規則の違いや、ユーザーが手入力したデータによるタイプミスなどによって、データが本来あるべき場所に収まらない場合などが考えられます。
BMI(ボディマス指数)のようなケースでは、一度だけ発生したため、修正は非常に簡単です。これはちょっとした面白いトリックで、空のセルの1つをクリックし、右クリックして「一致するセル」を選択すると、すべての空のセルが選択されます。
選択範囲を反転すると、ここに配置したいものがすべて選択されます。これらをコピーして、この列のヘッダー部分だけを選択すると、選択された状態が維持されるので、そのまま貼り付けるだけでエラーは修正されました。この列を削除できます。これが一番簡単な方法です。
12個の列で発生する場合、処理速度は低下し、手間もかかります。もしこの問題が発生した場合、最適な修正方法は、列名を修正することです。しかし、繰り返しになりますが、作業内容やプロセスのどの段階にいるかによって、解決方法は様々です。この問題に対処するには、これといった最適な方法はありません。
しかし、連結を行う際に人々が最も困惑する点として、列数が多く、データが適切な場所に収まらないことが挙げられます。そこから問題が起こります。しかし、それ以外は連結は非常にうまく機能し、多数のテーブルを1つのテーブルに非常に高速にまとめる優れた方法です。
そろそろ時間も終わりに近づいてきました。ここでは具体的な例を挙げずに、これらの機能について簡単に説明します。これは、まだこれらの機能をあまり使っていないため、大量のヒントやコツを開発できていないからです。しかし、十分に使い込んでいるので、これらの機能は非常に便利で、調べてみる価値があり、試してみる価値があることは分かっています。
JMPクエリビルダーは、基本的に、目の前にある複数のデータテーブルからSQLクエリを作成できるツールです。また、コンピューター外部のデータベースに保存されているデータテーブルをJMPクエリビルダーで処理し、そのデータをすべてJMPに取り込むことも可能です。さらに、既存のテーブルと組み合わせて使用することもできるので、非常に便利です。
欠損データパターンについて、私は欠損データパターンに関する素晴らしいプレゼンテーションをいくつか見てきました。しかし、私は欠損データの問題にあまり悩まされていないので、実際に日常業務で欠損データパターンを使ったことはありません。
また、欠損データパターンは、欠損データパターンがどこにあるのかを探るために、全く別の方法でデータマイニングすることに慣れてから何年も経ってから登場しました。まだ欠損データパターンを自分の武器に加えていないだけです。他の人が使っているのを見ると、データの見方がとても楽しいので、もっと試してみる必要があると自分に言い聞かせています。
データテーブルの比較。これは面白い機能で…ちょっとだけお見せします。いくつかのテーブルを選んで比較できます。JMPはテーブルの名前をかなり正確に一致させようとします。ここでそれが行われているのが分かりますが、修正することもできます。「比較」をクリックするだけで、テーブル内のすべての違いが表示されます。
ここで見られるように、これが何を示しているのか正確には分かりません。もっと使い込んで慣れていく必要がありますが、少なくとも2つのテーブルを見て、すべてが同じかどうかを確認するのは楽しい方法です。多くの場合、データに意図しない変更を加えていないか確認しています。
変更点の具体的な部分を見ていくと、これらのオプションの多くがまさにその真価を発揮します。皆さんにもぜひ試してみて、ご自身のユースケースでどのような効果が得られるか確認してみてください。JMPは優れたプラットフォームですが、私自身はまだその真価を十分に使いこなせていません。しかし、JMPを使うことで実現できる、本当に素晴らしい機能です。これは、私自身が他の方法では実現できないものです。
最後に、リストの最後、「匿名化」です。これは基本的に、目の前にあるテーブルを取得し、「OK」をクリックすると匿名化されます。これで、誰もこれが何を意味するのか分かりません。これが、他の人が理解したり理解したりできるような情報を一切含まないデータテーブルを作成するポイントです。
テーブルに独自の情報が含まれているが、JMP の助けを借りて問題を解決したい場合は、テーブルを匿名化し、この情報を使用して問題を再現して、他の JMP サポート担当者と安全に共有することができます。これにより、社内で設定されている独自の IP ルールに違反する心配がなくなります。なぜなら、このデータの出所や使用状況が誰にもわからないからです。
これは本当に面白い情報ですね。JMPを使えば、こうした処理をかなり高速かつ簡単に実行できるんです。ぜひ試してみてください。本当に楽しいやり方ですね。
これでテーブルメニューの説明はほぼ終わりです。JMPとディスカバリーシリーズに携わる皆様に、このような機会を与えていただき感謝申し上げます。これは本当に楽しい話題なので、ぜひお話させてください。JMPを使い続ける中で、多くの方が価値を見出せる内容だと思います。本当にありがとうございました。本日は以上です。