ループで等しいjmpデータセットを結合する(スクリプト)構造的に同一のデータセットが100個あります。 それらすべてには、IDと、そのデータセットの名前を含む定数/フィールドが含まれています。
それらを連結する(「長い」形式)のは簡単です。
今、私はそれらを「ワイド」フォーマットにマージする必要があります、それは同じように簡単ですか?
その定数を各JMPデータセットのプレフィックスとして使用することを考えていますが、どうすればそれをループで機能させることができますか。
何か提案はありますか?
どうもありがとうございました
初心者
Re:ループで等しいjmpデータセットを結合する(スクリプト)データセットが何を表しているのか、結果として得られる結合されたデータセットが何のためにあるのか想像できません。 その情報は、私たちがあなたの問題をよりよく解決するのに役立つかもしれません。 データセットの構造が同一で、繰り返し定数のみが含まれている場合は、問題に対してより効率的なデータ構造とデータメソッドがあるように思われます。
では、結合されたデータセットを使用してJMPで何をしますか?
Re:ループで等しいjmpデータセットを結合する(スクリプト)これは、あなたが提供した新しい情報を考慮に入れて、私の元のスクリプトを作り直したものです。
また、汚染されたデータテーブルの使用と使用を検討することもできます。
テーブル==>分割
それはあなたが望むものに非常に近づくことができます
Names Default To Here( 1 );
// Create example data tables to be used in the merging
dt = Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
constants = "ABCDEFGHIJKLMNOP";
dt << delete columns( {"Subject", "Dose"} );
dt << New Column( "ID", character, formula( Char( Row() ) ) );
dt << Go To( :ID );
dt << Move Selected Columns( To First );
For( i = 2, i <= N Cols( dt ), i++,
Current Data Table( dt );
dt2 = dt << subset( selected rows( 0 ), columns( :ID, Column( i ) ) );
Column( dt2, 2 ) << set name( "Value1" );
dt2 << New Column( "Value2", formula( Floor( :Name( "Value1" ) + Random Integer( 5 ) ) ) );
dt2 << New Column( "Constant", character, set each value( Substr( constants, i - 1, 1 ) ) );
);
Wait( 0 );
Close( dt, nosave );
// Merge the tables together
// Get the table Names
tableList = {};
For( i = 1, i <= N Table(), i++,
Insert Into( tableList, Data Table( i ) << get name )
);
theConstant = Column( Data Table( tableList[N Items( tableList )] ), "Constant" )[1];
Data Table( tableList[N Items( tableList )] ) << New Column( theConstant || "_ID", character, formula( :ID ) );
Column( Data Table( tableList[N Items( tableList )] ), "Value1" ) << set name( theConstant || "_Value1" );
Column( Data Table( tableList[N Items( tableList )] ), "Value2" ) << set name( theConstant || "_Value2" );
// Loop across the tables and using Update put them back together
For( i = N Items( tableList ) - 1, i >= 1, i--,
theConstant = Column( Data Table( tableList[i] ), "Constant" )[1];
Data Table( tableList[i] ) << New Column( theConstant || "_ID", character, formula( :ID ) );
Column( Data Table( tableList[i] ), "Value1" ) << set name( theConstant || "_Value1" );
Column( Data Table( tableList[i] ), "Value2" ) << set name( theConstant || "_Value2" );
Data Table( tableList[N Items( tableList )] ) << Update( With( Data Table( tableList[i] ) ), Match Columns( :ID = :ID ) );
);
Re:ループで等しいjmpデータセットを結合する(スクリプト)どういうわけか、金曜日の午後からの私の投稿は失われたようでした...
それはあなたが電車で働くときにあなたが支払う代償です、またはそう思われます。
100個のデータセットがあり、それぞれに異なる定数が含まれています。
例えば
データセット1
ID定数値1値2
1 A 123 123
2 A 123 123
データセット2
1 B 456 456
2 B 456 456
データセット3
1 C 789 789
2 C 789 789
私が欲しいのは、それらを次の構造を持つ単一のデータセットにまとめることです。
A_ID A_CONSTANT A_VALUE1 A_VALUE2 B_ID B_CONSTANT B_VALUE1 B_VALUE2
1 A 123123 1 B 456456
2 A 123 123 2 B 456 456など、
そこにたどり着くには2つの方法があります。
(1)最初に各データセット内の各単一列にプレフィックスを追加してから、IDでマージするか、または
(2)最初にすべてのデータセットを汚染し、次に定数レベルをプレフィックスとして使用してそれらを転置/反転/ループします(ただし、JMPは混合データ型を好まないことがわかりました)
そこに着く方法はありません... ?
どんな助けでも大歓迎
初心者
Re:ループで等しいjmpデータセットを結合する(スクリプト)こんにちはテキサス、
私はその瞬間(私は旅行中)にJMPにアクセスできませんが、結果は次のようになります。
さて、自分で構造を見ると、連結してから、汚染されたテーブルを反転/ループするのは簡単なアプローチかもしれません(IDはそれほど重要ではありません)。 ただし、これが最も単純な(マクロ)ループで解決できるかどうかを知りたいと思います。
ファイル1:
ID定数値
1 AB 123
2 AB 456
File2:
ID定数値
1 DEF 123
2 DEF 456
..。
File100:
ID定数値
1 Z 123
2 Z 456
CONSTANTによる「ループ」
望ましい結果
AB_ID AB_Constant AB_Value DEF_ID DEF_ ConstantDEF_Value..。 Z_IDZ_定数Z_Value
1 AB 123 1 DEF 123 ... 1 Z 123
2 AB 456 2 DEF 456 ... 2 Z 123
Re:ループで等しいjmpデータセットを結合する(スクリプト)出力データテーブルをどのように表示するかは明確ではありませんが、説明の構造と同様に、データテーブルをマージする簡単な例を次に示します。
Names Default To Here( 1 );
// Create example data tables to be used in the merging
dt = Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
dt << delete columns( {"Subject", "Dose"} );
dt << New Column( "ID", character, formula( "A" || Char( Row() ) ) );
dt << Go To( :ID );
dt << Move Selected Columns( To First );
For( i = 2, i <= N Cols( dt ), i++,
current data table(dt);
dt2 = dt << subset( selected rows( 0 ), columns( :ID, Column( i ) ) );
dt2 << New Column("Table Name", character, set each value(dt2<<GET name=""></GET>