テーブル内のバッチをカウントしてデータテーブルを作成するこんにちは、JMPコミュニティ
バッチ番号が部分的にしか入力されていないデータセットがあります。
私の目標は、バッチごとに 1 行を含むデータセットを作成することです。
最初のバッチ番号と最後のバッチ番号を比較することで、必要な行数を計算できます。
例に示すように、最初のバッチ番号が 7 で最後のバッチ番号が 37 なので、30 行のデータセットが必要になります。
バッチ名では、最初の 3 桁と最後の 2 桁は無視されます。
私の考えでは、これは簡単なはずですが、行き詰まっています…
行き詰まりから抜け出すことができれば幸いです!
ありがとう
キリスト教徒
自動化とスクリプトデータのブレンドとクリーンアップRe: テーブル内のバッチをカウントしてデータテーブルを作成するうーん、あなたの質問が理解できません。同じ情報を持つ行が複数あります (最初の 3 行と 4 行目と 5 行目)。21 ~ 23、25 ~ 26、29 の行がありませんか? また、最初の 6 桁は同じです。
具体的に何をしたいですか? いつでも列を右クリックして再コード化を使用できます。
Re: テーブル内のバッチをカウントしてデータテーブルを作成するこのような感じでしょうか? 複数の行ではなく、バッチごとに 1 行の新しいテーブルを作成し、不足しているバッチを埋めます。
Names Default To Here( 1 );
Batch_vals = Associative Array( :Batch ) << Get Keys;
prefix = Left( :Batch[1], 3 );
suffix = Right( :Batch[1], 2 );
rootlength = Length( Batch_vals[1] ) - Length( prefix ) - Length( suffix );
Batch_nums = Transform Each( {v, i}, Batch_vals, Num( Substitute( v, {prefix, suffix}, "" ) ) );
Min_batch = Min( Batch_nums );
Max_batch = Max( Batch_nums );
Batches = Min_batch :: Max_batch;
dt = New Table( "Batches", New Column( "Batch Number", numeric, continuous, Set Values( Batches ) ) );
Eval(
Eval Expr(
dt << New Column( "Batch", character, Formula( Expr( prefix ) || Right( Char( :Batch Number ), rootlength, "0" ) || Expr( suffix ) ) )
)
);
dt:Batch << Delete Formula;Re: テーブル内のバッチをカウントしてデータテーブルを作成するこれにより、バッチ番号は作成されず、番号だけが作成されます。
Names Default To Here(1);
dt = Data Table("Format");
Summarize(dt, uniq = By(:Batch));
first_val = Num(Substr(uniq[1], 4, Length(uniq[1]) - 5));
last_val = Num(Substr(uniq[N Items(uniq)], 4, Length(uniq[1]) - 5));
dt = New Table("Res",
New Column("R", Numeric, Ordinal, Values(first_val::last_val))
);
そのアイテムリストを文字列に変換し、そこからテーブルを作成することで、バッチ番号を追加することができます(前と同じ first_val と last_val)
batches = Transform Each({item}, As List((first_val::last_val)`),
"245" || Right("00000" || Char(item), 5) || "00"
);
dt = New Table("Res2",
New Column("R", Character, Ordinal, Values(batches))
);Re: テーブル内のバッチをカウントしてデータテーブルを作成するありがとう、Jarmo! これは完璧です。
この記事を書いている間、私は JMP コミュニティがいかに素晴らしいかを自慢していましたが、期待を裏切られることはありませんでした。
乾杯、クリスチャン
Re: テーブル内のバッチをカウントしてデータテーブルを作成する返信ありがとうございます、 @mmarchandFSLRさん!
あなたのスクリプトは完璧に動作します!
あなたのソリューションには、Associative Array、Transform Each、Eval、Eval Expr など、私にとって新しいプロンプト/スクリプトがいくつか含まれています。
あなたのソリューションがどのように機能するかを詳しく調べるのが楽しみです!
この投稿を書いている間、私は JMP コミュニティがいかに素晴らしいかを自慢しましたが、期待を裏切られることはありませんでした。
乾杯、クリスチャン
Re: テーブル内のバッチをカウントしてデータテーブルを作成するこれらの機能のいくつかと重要な変更点の簡単な説明:
Names Default To Here( 1 );
//An associative array is a dictionary or hash map that links keys to values. Each key must be unique.
//Using a single column as the argument for the array gives us the unique values of the column with each value set to 1
//The <<GET keys="" message="" then="" yields="" the="" only=""></GET>
Re: テーブル内のバッチをカウントしてデータテーブルを作成するバッチ番号を順番に増やして行を作成できます。