条件出力によるセル比較やあ、
私は作成しようとしていますカウント例として下の表を使用して、条件に基づいて発生の数を示します。 カウントが 1 の条件は、列「パラメーター」と「場所」の両方が次の行で一緒に繰り返されるか、2 列の他の場所で繰り返されることです。 出力テーブルには、元のテーブルに存在するのと同じ列データがあり、"Count"、"Tool 1"、"Tool 2" の 3 つの列が追加されます (ツールの数は 5 まで増やすことができます)。

このテーブルの出力は次のようになります。 行 3 と 4 は 2 列の条件 (パラメーターと場所) ごとに繰り返され、カウントは 1 になるため、2 番目のカウントとなる同じ条件で合計 2 が繰り返されます。 表示される行は、日付順の 3 つの行のうち最初の行に依存します。 最後に、ツール列も日付順に表示されます (つまり、ツール 1 (または E) が最初に午後 1 時 10 分に入力され、次にツール 2 (または F) が午後 2 時 10 分に入力されます) など。

データ表Re: 条件出力によるセル比較これは、データ変換の良いスタートを切るためのスクリプトです
Names Default To Here( 1 );
// Create a sample table
dt = New Table( "Sample",
Add Rows( 6 ),
Set Header Height( 46 ),
New Column( "Date/Time",
Numeric,
"Continuous",
Format( "y/m/d h:m", 19 ),
Input Format( "y/m/d h:m" ),
Set Values( [3273127800, 3273124200, 3273142200, 3273138600, 3273152400, 3273149400] )
),
New Column( "Parameter", Character, "Nominal", Set Values( {"A.1", "A.2", "A.3", "A.3", "A.2", "A.3"} ) ),
New Column( "Location", Character, "Nominal", Set Values( {"B.1", "B.2", "B.3", "B.3", "B.1", "B.3"} ) ),
New Column( "Process", Character, "Nominal", Set Values( {"C.1", "C.2", "C.3", "C.3", "C.1", "C.3"} ) ),
New Column( "Tool", Character, "Nominal", Set Values( {"E.", "E", "F", "E", "E", "G"} ), Set Display Width( 43 ) ),
New Column( "Part", Character, "Nominal", Set Values( {"F-1.1", "F-1.2", "F-1.1", "F-1.1", "F-1.1", "F-1.1"} ) )
);
// The calculation script starts here
// Calculate the Counts
dtSum = dt << Summary(
Group( :Parameter, :Location ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "Summary" )
);
// Delete rows that have no matches
dtSum << select where( dtSum:N Rows == 1 );
If( N Items( dtSum << get selected rows ) > 0,
dtSum << delete Rows
);
// The count is equal to how many rows, not how many matches so subtract 1 to count the matches
For Each Row(
dtSum:N Rows = dtSum:N Rows - 1;
);
dtSum:N Rows << set name("Count");
// Create a new table from original that contains only the data with matches
dtJoin = dt << Join(
With( dtSum ),
Merge Same Name Columns,
Match Flag( 0 ),
By Matching Columns( :Parameter = :Parameter, :Location = :Location ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "Joined" )
);
// Sort the data to set tool usage order
dtJoin << Sort( By( :Parameter, :Location, :"Date/Time"n), Replace Table(1));
// Create a new column for tool order
dtJoin << New Column("Tool Col", character, set each value(
"Tool " || Char( Col Cumulative Sum(1, :Parameter, :Location))
));
// Split the data to the final output for
dtFinal = dtJoin << Split(
Split By( :Tool Col ),
Split( :Tool ),
Group( :Parameter, :Location ),
Output Table( "Final" ),
Sort by Column Property
);
// Clean up
close( dtSum, nosave );
close( dtJoin, nosave );
さまざまなプラットフォームと関数に関するドキュメントは、スクリプト インデックスとスクリプト ガイドに記載されています。どちらも [ヘルプ] プルダウン メニューから利用できます。
Re: 条件出力によるセル比較こんにちは、
私はあなたが探しているものを見ている*と思います*が、ジムが言及しているように、より多くのコンテキストが優れています. 以下は、提供したデータに対して説明した出力を生成しますが、出力は1行しかないため...単なる推測です。 あなたが提供した入力と出力に基づいて、パラメーターと場所に加えて、プロセスとパーツの ALSO がグループ化変数 (?) として使用され、Count は常にデータの要約の n 行よりも 1 少ないと仮定します. これらは、そうでない場合でも、以下のコードで簡単に変更できますが、繰り返しになりますが...ただの推測です。
いずれにせよ、これを試して必要なものかどうかを確認してください。そうでない場合は、必要なものから離れた簡単なコード MOD になることを願っています。
乾杯、
ブレイディ
Names Default To Here( 1 );
dt = New Table( "Sample",
Add Rows( 6 ),
Set Header Height( 46 ),
New Column( "Date/Time",
Numeric,
"Continuous",
Format( "y/m/d h:m", 19 ),
Input Format( "y/m/d h:m" ),
Set Values( [3273127800, 3273124200, 3273142200, 3273138600, 3273152400, 3273149400] )
),
New Column( "Parameter", Character, "Nominal", Set Values( {"A.1", "A.2", "A.3", "A.3", "A.2", "A.3"} ) ),
New Column( "Location", Character, "Nominal", Set Values( {"B.1", "B.2", "B.3", "B.3", "B.1", "B.3"} ) ),
New Column( "Process", Character, "Nominal", Set Values( {"C.1", "C.2", "C.3", "C.3", "C.1", "C.3"} ) ),
New Column( "Tool", Character, "Nominal", Set Values( {"E.", "E", "F", "E", "E", "G"} ), Set Display Width( 43 ) ),
New Column( "Part", Character, "Nominal", Set Values( {"F-1.1", "F-1.2", "F-1.1", "F-1.1", "F-1.1", "F-1.1"} ) )
);
/////////////////BEGIN PROCESSING
//create a summary table
dtSum = dt << summary( group(:parameter, :location, :"Date/Time"n, :process, :tool, :part), Link to original data table( 0 ) );
//create a column for easy group navigation
dtSum << new column ("plpp", character, formula(:parameter || :location || :process || :part));
//process table, from bottom up
for each ( { r }, nrow(dtSum) :: 2,
if ( dtSum:plpp[r] == dtSum:plpp[r-1],
dtSum:tool[r-1] ||= evalinsert(", ^dtSum:tool[ r ]");
dtSum:n Rows[r - 1] += dtSum:n Rows[ r ];
dtSum << delete rows ( r );
);
);
// delete rows with no duplicates
dtSum << deleteRows (dtSum << get rows where (:n Rows == 1) )
<< Move Selected Columns( {:"Date/Time"n}, To First )
<< Move Selected Columns( {:Tool}, To Last );
// rename nRows to count, after subtracting 1
dtSum:Nrows[1::nrow(dtSum)]--;
dtSum:NRows << set name ("Count");
// split out tool column
dtSum << Text to Columns( columns( :Tool ), Delimiters( "," ) );
dtSum << delete columns ({"Tool", "plpp"});
Re: 条件出力によるセル比較やあ、
はい、私が送信した最新のスクリーン キャプチャは、「最終」テーブルとラベル付けしたスクリプトからの出力です。 IP 以外のパラメーターを反映するように情報を更新する必要があるため、問題の特定のテーブルをデータと共有していないことをお許しください。 もっと上手に説明できるように頑張ります。 最初の質問で述べたように、以下の表はサンプル ケースです。

出力は次の表のようになります

を作成したいまとめ「ツール」が「日付/時刻」の同じ日内に「場所」にヒットした回数 (繰り返し) またはカウントの表 (特定の時刻である必要はありません)。 そのため、場所、パラメーター、およびプロセスごとに行が繰り返される場合は、それを 1 回の繰り返しとしてカウントする必要があります。 その 2 番目の行が同じツールまたは別のツールにある場合、1 回の繰り返し回数について述べた 3 つの基準を満たしている限り、問題はありません。 次に、出力テーブルの例で「ツール 1」、「ツール 2」などと表示されている場合は、これらの繰り返しの繰り返しイベントに関与したツールの記録になります。 したがって、ツール「E」に移動した場合、(場所、パラメーター、プロセス) は、同じ日に別のイベントが発生し、それがツール「F」にあったことを示し、最初のイベントが発生したことを反映して右側に列が追加されます。 Eで2番目、Fで2番目など。 最終的には、その要約から jmp で一連のプロットを作成し、ツール、パラメーター、場所などごとにこれらの繰り返しイベントの数を表示できるようにしたいと考えています... これらの繰り返しイベントにどのツールが関与しているかに加えて。 それが私の考えをもう少し説明してくれることを願っています。 そして、これについてお時間をいただきありがとうございます。
Re: 条件出力によるセル比較Brady のコードと私のバージョンのコードはどちらも、提供された単純なテーブルで機能します。 彼のコードが機能しない場合は、テストできるように、より多くのデータが入力されたテーブルを提供してください。
Re: 条件出力によるセル比較やあ、
まず、長い遅延についてお詫び申し上げます。私は複数の方向に引っ張られました。 次に、スクリプトをありがとうございます。ほぼ完璧で、「Final」テーブルが出力されました。 私が見つけたのは、カウント列が本来の機能を果たしていることですが、「ツール」はデータを固定していません。 各ツールの意味は、ヒット/カウントの合計「カウント」が必要であるため、「カウント」の1つの列とその隣のツールのそれぞれの列には、パラメーターのような他の列によってもグループ化されるヒット数が必要です。場所など... 私が得たものは以下の写真です。ツールは、カウントに関連付けられた行に分散されるだけでなく、異なる列に分割されます。 そして、新しく作成された「ツール」列は同じ ID を繰り返します

Re: 条件出力によるセル比較上記の出力例は、出力がどのように見えるべきかの例ですか、それとも出力が現在どのように間違っているかの例ですか?
テストに使用できる実際のデータの例があるので、使用している JMP データ テーブルを添付することは可能でしょうか?また、上記がデータがどのように見えるべきかの例ではない場合、その簡単な例を提供していただけますか?私はあなたが本当に探しているものについて混乱しています。
Re: 条件出力によるセル比較これはうまくいきましたありがとう!
Re: 条件出力によるセル比較ありがとう、これは小さなグループ化操作でも機能します。