列のサブセットまたはセル範囲をテーブルからテーブルにコピーする2 つのデータテーブルがあります。 table2 の一部の列は table1 の列と同一です。
同じ列のデータを table2 から table1 にコピーするつもりはありませんでした。
これは、もちろん、(1) table1 は table2 の数または行で拡張され、(2) table1 には欠落したデータが存在することを意味します。 それで大丈夫です。
私の問題は、table2 から table1 にデータをコピーする方法です。
たとえば、両方のテーブルに「NAME」という列があります。 Table1 には 1000 行、table2 には 2000 行があります。
結果は次のようになります: table1 には 3000 行があり、table1 の「NAME」は両方の NAME 列の「連結」になります。 table1 の他の列には 2000 個の欠落データまたは空データが含まれます。
ところで、実際には、テーブルははるかに大きく、(約 100 個のうち) 10 ~ 20 個の同一の列があります。 基本的な機能がわかったら対処していきます。 このようなサイズに問題がある場合に備えて言及します。
どうもありがとう
Re: 列のサブセットまたはセル範囲をテーブル間でコピーするこの例では何かがうまくいきませんでした。
しかし、気にしないでください、私はそのアイデアを思いつき、いくつかの入力ファイルに対してテストを実行するだけでうまくいくようでした。
まっすぐな道が目の前にあるのに、私は物事を不必要に複雑にしてしまったようです。
お待ち頂きまして、ありがとうございます
Re: 列のサブセットまたはセル範囲をテーブル間でコピーする
@RonB書きました:
はい、それはわかります。 しかし、私が扱っているデータ構造では、Fitness で同じ名前を持たない Big Class の列もコピーする必要があります。 つまり、これらの列は新しい列として出力テーブルに「垂直に連結」されます。 これらの列は欠損データ (フィットネスにある行と同じ数) から始まり、その後に Big Class からのデータが続きます。
これは、最初から 2 つのテーブルを単に連結することとどう違うのでしょうか? これを行うと、両方のテーブルのすべての行とすべての列を含むテーブルが完成します。 両方のテーブルで一致する名前がない列は、元々それらの列がなかった行では空になります。
抽象的な話はやめて、もっと具体的に話しましょう。 ここに 2 つのテーブルがあります。
表1
表2
これら 2 つのテーブルで [テーブル] -> [連結] を使用すると、このテーブルが完成します。
表3
| あ |
B |
C |
D |
| 1 |
1 |
1
|
• |
| 2 |
2 |
2 |
• |
| 3 |
3 |
3 |
• |
| 4 |
4 |
• |
4 |
| 5 |
5 |
• |
5 |
| 6 |
6 |
• |
6 |
上記の説明を私が解釈すると、それがあなたが望んでいるテーブルだと思います。 そうでない場合は、ご要望を誤解していて申し訳ありません。
Re: 列のサブセットまたはセル範囲をテーブル間でコピーするはい、それはわかります。 しかし、私が扱っているデータ構造では、Fitness で同じ名前を持たない Big Class の列もコピーする必要があります。 つまり、これらの列は新しい列として出力テーブルに「垂直に連結」されます。 これらの列は欠損データ (フィットネスにある行と同じ数) から始まり、その後に Big Class からのデータが続きます。
まず、Big Class 内のすべての名前が異なる新しい列を Fitness に追加することでそれを行うことができると思います。 あなたが私に示したのと同じ方法を使用して、これらの列のみでビッグクラスをサブセット化し、連結を実行します。
大変な作業ですが、多数のテーブルと列を処理する他に方法がありません。
改めて感謝します
Re: 列のサブセットまたはセル範囲をテーブル間でコピーする
@RonB書きました:
あとは、一致しない列をコピーする方法を見つけなければなりませんが、なんとかできると思います。
一致しない列はどのテーブルのものですか? 上の例では、Fitness テーブルのすべての列を保持し、Big Class の同じ名前を持つ列のみを連結します。 これは、Big Class をサブセット化して同じ名前の列を取得し、それを Fitness (すべての列がまだ残っている) に連結することによってのみ行われます。一致しない列を保持するための作業は必要ありません。
Re: 列のサブセットまたはセル範囲をテーブル間でコピーする働きました。 どうもありがとう。 あとは、一致しない列をコピーする方法を見つけなければなりませんが、なんとかできると思います。
Re: 列のサブセットまたはセル範囲をテーブル間でコピーする試してみてまた報告します(諸事情により時間がかかる場合があります)。
多くの送信
Re: 列のサブセットまたはセル範囲をテーブル間でコピーする
@RonB書きました:
理解できれば、列 ea を含む table2.1 を作成し、列を ae になるように並べ替えて、table2.1 を table1 に連結する必要がありますか?
これで、列の順序を変更する必要はありません。 「テーブル」->「連結」は、位置ではなく列名に一致します。
サブセットは列の選択に依存するため、2 つのテーブルに共通する列を選択する必要があります。 ただし、table1 からすべての列名を取得し、そのリスト全体を table2 に対して選択するだけなので、これは簡単です。 存在しないものは無視されます。
以下は 2 つのサンプル データ テーブルを使用した例です。
bc = Open( "$SAMPLE_DATA\Big Class.jmp" );
fit = Open( "$SAMPLE_DATA\Fitness.jmp" );
fit_cols = fit << get column names;
bc << select columns( fit_cols );
sub_bc = bc << Subset( All rows, Selected columns only( 1 ) );
fit << Concatenate( sub_bc );
//if you don't want a new table you can use "Append to first table"
fit << Concatenate( sub_bc, Append to first table );
Re: 列のサブセットまたはセル範囲をテーブル間でコピーするOK。 良い励ましです。
Table1 には列 abcde があり、table2 には列 xyezau v があります。 table2の列のみをtable1に連結したいと考えています。 どうやってそれをやるのですか?
理解できれば、列 ea を含む table2.1 を作成し、列を ae になるように並べ替えて、table2.1 を table1 に連結する必要がありますか?
Re: 列のサブセットまたはセル範囲をテーブル間でコピーする「テーブル」->「連結」などの組み込み関数をすぐに諦めないでください。
2 つのテーブル間で同じ名前の列のみが必要な場合は、「テーブル」->「サブセット」を使用して、各テーブルの列のみを含む 2 つのテーブルを作成し、それらの 2 つのテーブルを連結します。
Re: 列のサブセットまたはセル範囲をテーブル間でコピーする再度、感謝します。 残念ながら、私のデータセットの奇妙な性質のため、連結はできません。
テストを無視して、特定の列のみを連結する必要があります。
いつでもソーステーブルのすべての行をループしてターゲットテーブルに行を挿入し、列の値を1つずつ設定できます。 しかし、CPU を大量に消費するのではないかと心配しています。私のスクリプトでは、数十の列と数千の行を含む 100 以上のファイルを処理することになります。 さらに、おそらく避けられないとしても、これはエレガントな解決策ではありません。
質問を簡略化させていただきます。
そんなことしてもいいですか?
Column(dt, i)[from,to] = 値のリストまたは行列
ご辛抱いただきありがとうございます。
Re: 列のサブセットまたはセル範囲をテーブル間でコピーする連結では、一致しない列は無視されません。以下は、ビッグ クラスとビッグ クラス ファミリ、サンプル データ テーブルを使用したサンプルです。ビッグ クラス データ テーブルには、ビッグ クラス ファミリが持つ元のビッグ クラス データ テーブルにないすべての列が含まれることになることに注意してください。
Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA/big class.jmp" );
dt2 = Open( "$SAMPLE_DATA/big class families.jmp" );
dt1 << concatenate( dt2, Append to First Table( 1 ) );
Re: 列のサブセットまたはセル範囲をテーブル間でコピーするありがとう。
連結関数は、両方のテーブルで同一の列に対してのみ実行する必要があり、他の列はスキップする必要があるため、実行されません。
ソース列データを行列/リストに保存し、サブスクリプション [I,j] を使用してターゲット列 (2 番目のテーブル) に値を設定しようとしましたが、何かが足りないと思います。
Re: 列のサブセットまたはセル範囲をテーブル間でコピーするJMP にコードを生成させることができます。
を実行します。
テーブル==>連結
新しいデータ テーブルで、データ テーブルの左側にあるテーブル パネルに移動し、[ソース] エントリを右クリックして、[編集] を選択します。ファイルを連結するために必要な JSL が表示されます。
JSLは基本的には
dt1=data table(<YOUR first="" table="">);
dt2=data table(<YOUR second="" table="">);
dt1 = dt1 << concatenate( dt2, Append to First Table(1));</YOUR></YOUR>
Re: 列のサブセットまたはセル範囲をテーブル間でコピーするありがとう。 私はそれについて考えました。 ただし、そのようなファイルが多数あり、列の順序が 1 つずつ変わるため、スクリプトを使用して実行する必要があります。
それを実現するコードを考えてみたいと思います。
ありがとう
Re: 列のサブセットまたはセル範囲をテーブル間でコピーするJMP は、次を使用してデータテーブルを連結します。
テーブル==>連結
連結するときに列名ごとに列が整列されます。欠損値は、どちらかのデータ テーブルに表示されない列の行に自動的に追加されます。
連結プラットフォームは、一致する列の名前をそのまま保持し、ベース データ テーブルにない列には新しい列名を追加するだけです。
ドキュメントについては、以下を参照してください。
ヘルプ==>書籍==>JMPの使用