スプレッドシートからの JMP データ テーブルの更新が簡単に - パート 1ビッグデータの時代では、すべてのデータをデータベースや Hadoop サーバーなどに保存したり、ストリームから直接アクセスしたりしたいと考えています。 しかし、依然として多くのデータがスプレッドシートに保存または書き込まれ、機械、エンジニア、研究室の担当者、その他の種類のオペレーターによって手動または自動で更新されています。 JMP では、あらゆる種類のデータをスプレッドシートから JMP に簡単にインポートできます。 自動生成された「ソース」スクリプトを使用して、これを簡単に自動化することもできます。 ただし、このスクリプトを再度実行すると、新しいデータ テーブルが開き、現在のデータ テーブルは更新されません。
通常、これはあなたが望むものではありません。 なぜ? すでにデータのクリーニングや再コーディングを行っている可能性があります。 また、分析を行ってデータ テーブルに保存し、その後新しいデータにも使用したい場合もあります。 この記事では、現在のデータ テーブルをスプレッドシートの新しいデータで更新し、現在持っている行を保持し、スプレッドシートから新しい行のみを追加する方法を説明します。
取り上げたいシナリオは 2 つあります。
- この記事では、垂直構造データの簡単なケースについて説明します。 つまり、列名が含まれる行が 1 つあり、その先の他の行にはデータが含まれます。

- で2番目の記事水平構造データのケースについて説明します。 つまり、最初の行/最初の列がパラメータ名で、次の列がデータです。 2 行目は単位、3 行目はバッチ番号です。 次に空の行を作成し、その後別のパラメータに対して同じことを繰り返します。 これはスプレッドシートで読む方が簡単ですが、実際に分析するのはそれほど簡単ではありません。 この種のデータをよく目にしますが、水平構造で回避策を試みるよりも、垂直方向の方法でデータを入力するように人々を訓練する方がはるかに良いでしょう。

それでは、スプレッドシート データを見てみましょう。これは気象データであり、概念を示すために単純化されています。 JMP データ テーブル内のスクリプトと最初のケースの Excel スプレッドシートを添付します。
まずは状況から始めましょう
以前のバージョンのスプレッドシート (その時点までの 3 行のデータ) はすでにインポートされています。 次に、データテーブルを更新したいと思います。 データテーブルの左上のウィンドウに更新スクリプトが表示されます。 このスクリプトは次のことを行います。
- 現在のデータテーブル名とそのデータテーブルの行数にアクセスします。
- 新しいデータを取得するスプレッドシートのファイル名とワークシート名を設定します。
- スプレッドシートを開き、ワークシート データをヘルプ データ テーブルに読み取ります。
- 初めてデータをインポートしたときに生成されたソース スクリプトに依存します。
- ただし、「Data Starts on Row」エントリを (2) から (2+n_Rows) に変更したため、まだインポートしていないデータのみが取得されます。
- あとは、「最初のテーブルに追加」オプションを使用して 2 つのテーブルを連結するだけです。
cdt = Current Data Table();
excelFile = "WeatherData.xlsx";
name_worksheet = "WeatherData"; // or "Sheet1" for this Excel book example
n_Rows = N Rows();
dt_h1 = Open(
excelFile,
Worksheets( name_worksheet ),
Use for all sheets( 1 ),
Concatenate Worksheets( 1 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 + n_Rows ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 )
),
Invisible
);
cdt << Concatenate (dt_h1, Append to first table);
Close(dt_h1);
結論
難しくないようです。 優れた点は、再コード化などのデータ クリーニング機能を使用して、それを数式列として保存すると、新しいデータが自動的に処理されることです。 または、以前のデータを使用して予測モデルを作成し、予測式をデータ テーブルに保存して、新しいデータの予測を確認します (たとえば、新しいモデルや実際の予測データと比較します)。 たくさんの使用例が見つかると思いますので、お役に立てば幸いです。
もちろん、これを使用して、管理図やその他の傾向分析の更新など、データに分析を追加して拡張することもできます。 Windows スケジューラを使用してレポートを更新し、新しい製品に送信することもできます。 JMPライブそのため、他の人 (必ずしもライセンスを取得した JMP ユーザーである必要はありません) は、データ フィルターや列スイッチャーなどの JMP の対話機能を使用して、Web ブラウザーでレポートにアクセスできます。
次に何を期待するか
次回の投稿では、少し異なりますが、それほど難しくない 2 番目のケースについて説明します。
この種の問題が発生しているかどうか、またはデータが (スプレッドシートで) どのように構造化されているかについて知りたいと思っています。 コメントを残してください。
ではごきげんよう、
マーティン
PS: ファイルに対する 2 つのコメント:
- WeatherData.jmp には、添付された Excel ファイルでデータ テーブルを更新するためのスクリプトがあります。 両方のファイルは同じフォルダーに保存する必要があります (これは簡単のためであり、ハードコードされたファイル名は Pick File() などで簡単に変更でき、名前も抽出できます。
- 2 番目のスクリプトは「最後の 2 行を削除」です。これにより、行を手動で削除することなく、データ テーブル内の行を削除して Excel シートから再度更新できます。 すべてはあなたの便宜のために:)
現在の JMP データ テーブルを (垂直構造化された)スプレッドシートを作成し、現在のデータ テーブルに加えた変更を保存します。
- パート1Re: スプレッドシートから JMP データ テーブルを簡単に更新 - パート 1こんにちは、ホギさん
以前のデータに変更を加えない場合は、これがオプションになります。 たとえば、すでにデータの品質チェックを行って、データを変更または除外したり、追加のコメントなどを行ったりした可能性があります。 何かを変更するとすぐに、この方法でデータを追加すると、通常は望ましくない変更がすべて削除されます。
Re: スプレッドシートから JMP データ テーブルを簡単に更新 - パート 1別のアプローチ:
1) 新しいデータをロードします。ソース脚本
2) メインテーブルからすべての行を削除します。
3) 連結により新しいデータを追加します
dt = Current Data Table();
dtnew = dt << Run Script( "Source" );
dt << Select All Rows << Delete Rows;
dt << Concatenate( dtnew, Append to first table );
Close( dtnew, NoSave );
Re: スプレッドシートから JMP データ テーブルを簡単に更新 - パート 1こんにちは、hogi さん、追加のオプションをありがとうございます。とてもいいですね。
そしてあなたは正しいです:
「2 番目のテーブルのデータでメインテーブルを更新」は、現在のテーブルの列を使用するだけで、列名が一致する場合は列を更新します。 2 番目のテーブルの他の列は追加されません。
「同じ名前の列をマージ」では、同様の名前の列のデータを空の場所にマージ/上書き/埋め込みます。 ただし、2 番目のテーブルの他の列も追加されます。
最初の操作では、特にこの操作で新しいデータ テーブルを作成せず、2 番目の操作で既存のデータ テーブルを更新する場合は、[テーブル] -> [更新] 機能を使用することもできます。
他に違いがあることはわかりません。
Re: スプレッドシートから JMP データ テーブルを簡単に更新 - パート 1「」と「」の違いは何だろうと思ったのですがメインテーブルを 2 番目のテーブルのデータで更新します" そして "同じ名前の列をマージする「 - ここでもまったく同じことをしますよね?

しばらくいじってみたところ、列を追加した 2 番目のテーブルを使用するときに違いが見つかりました。
-」メインテーブルを 2 番目のテーブルのデータで更新します」アップデートメインテーブル (by同じ名前の列を結合する)、追加の列はありません
-」同じ名前の列を結合する」同じですが、さらに、2 番目のテーブルから新しい列が追加されます。
さらに違いはありますか?
Re: スプレッドシートから JMP データ テーブルを簡単に更新 - パート 1あるいは、参加プラットフォームを使用することもできます。
まず両方のテーブルをロードします。
Open( "$DOWNLOADS/WeatherData.jmp" );
Open( "$DOWNLOADS/WeatherData.xlsx", Worksheets( "Backup_NewData" ), );
次に、最も簡単な方法は、「行番号で」それらを結合することです。
Data Table( "WeatherData" ) << Join(
With( Data Table( "Backup_NewData" ) ),
Merge Same Name Columns,
By Row Number
);
あるいは、日付列を使用すると、行番号とは関係なく個々のエントリを識別できます。
これにより、テーブルを結合するためのより堅牢な方法が可能になります。列の一致:
(注意: 1 分の時間オフセットにより、10 月 15 日と 16 日は 2 回表示されます)
Data Table( "WeatherData" ) << Join(
With( Data Table( "Backup_NewData" ) ),
Merge Same Name Columns,
By Matching Columns( :Date = :Date ),
Drop multiples( 0, 0 ),
Include Nonmatches( 1, 1 )
)
Re: スプレッドシートから JMP データテーブルを簡単に更新する方法 - パート 1@martindemel 、あなたは上でこう言っています:
最初の場合には、特にこの操作で新しいデータ テーブルを作成するのではなく、2 番目のデータで既存のテーブルを更新する場合に、[テーブル] -> [更新] 機能を使用することもできます。
まさに私がやりたいことなのですが、「更新」には新しいテーブルから行を追加するオプションがなく、既存のデータを更新するだけです。また、「結合」には新しいデータテーブルを作成しないオプションがありません。このデータテーブルを仮想結合で使用しているため、新しいデータテーブルとの仮想結合リンクが壊れてしまい、非常にイライラしています。
JMPのウィッシュリストに、 テーブル結合:メインテーブルを更新するオプションという項目を見つけました。JMPにこの機能を実装してほしい場合は、このウィッシュリストに賛成票を投じてください。