これが可能かどうかわからない...1または2(チャネルと呼ばれる)のいずれかの列を持つデータテーブルがあります。 別の列には「テスト」の指定があります。 10、20、30などの数値です。
私が望むのは、チャネル1とチャネル2のすべての「テスト」を連結する別の列を作成することです。 したがって、データの各行には、チャネルに基づくテストの連結を含む列があります。 したがって、チャネル1では10 | 30 | 80、チャネル2では20 | 40 | 30のようになります。
データテーブルには、さまざまなテストからの1000行の結果データを含めることができます。 どのチャネルがどのテストをマシンで使用しているかを確認することに興味があります。 マシンごとに異なるチャネルで異なるテストを行うことができるため。
また、別の修飾子を追加する必要があるかもしれません。 そのため、「テスト」はチャネルチャネルだけでなく、マシン(シリアル番号で示される)によっても連結されます。
これは、スクリプト後のクエリに含めるためのスクリプトになります。
どんな提案でも大歓迎です!
スクリプティング再:これが可能かどうかわからない...やりたいことをするのはそれほど難しくありません。しかし、あなたの説明は少し紛らわしいです。データテーブルの小さな例と、この新しい列として提案するものを提供することは可能でしょうか?再:これが可能かどうかわからない...確かに添付されているのは表の例です。 マシンは1つしかリストされていませんが、テーブルに複数ある可能性があります。 また、時間の経過とともに、チャネルごとのテスト番号が変化する可能性があります。
データを表にして、どのチャネルがどのテスト番号を持つかを日付で取得できますが、データの各行の列にそれを示す方法があります。 testinitiationdatelocalは、日付を取得するための短い日付として使用できます。
再:これが可能かどうかわからない...確かに添付されているのは表の例です。 マシンは1つしかリストされていませんが、テーブルに複数ある可能性があります。 また、時間の経過とともに、チャネルごとのテスト番号が変化する可能性があります。
データを表にして、どのチャネルがどのテスト番号を持つかを日付で取得できますが、データの各行の列にそれを示す方法があります。 testinitiationdatelocalは、「日付」を取得するための短い日付として使用できます
再:これが可能かどうかわからない...これは、テストを単一の列に計算するスクリプトです。 testnumberデータを含むテーブルをクリックしてアクティブなデータテーブルにし、このスクリプトを実行するだけです。
names default to here(1);
// Set up a handle to point to the example data table
dt=current data table();
// Find the testnumbers for each machine/channel combination
dtSumm = dt << summary(
Group( :Machine, :Channel,:testnumber),
N,
Link to original data table(0)
);
// Create a new table to accumulate the testnumbers into a single value
dtFinal = New Table("Concat Test Number",
New Column("Machine", character),
New Column("Channel"),
New Column("Tests", character)
);
For(i=1,i<=N Rows(dtSumm), i++,
If(i==1,
dtFinal << add Rows(1);
dtFinal:Machine[N Rows(dtFinal)] = dtSumm:Machine[i];
dtFinal:Channel[N Rows(dtFinal)] = dtSumm:Channel[i];
dtFinal:Tests[N Rows(dtFinal)] = char( dtSumm:testnumber[i])
,
dtSumm:Machine[i] != dtSumm:Machine[i-1] |
dtSumm:Channel[i] != dtSumm:Channel[i-1]
,
dtFinal << add Rows(1);
dtFinal:Machine[N Rows(dtFinal)] = dtSumm:Machine[i];
dtFinal:Channel[N Rows(dtFinal)] = dtSumm:Channel[i];
dtFinal:Tests[N Rows(dtFinal)] = char( dtSumm:testnumber[i])
,
dtFinal:Tests[N Rows(dtFinal)] = dtFinal:Tests[N Rows(dtFinal)] || "/" || char( dtSumm:testnumber[i])
)
);
// Merge the new column back to the origianl table
dt = dt << Update(
With( dtFinal ),
Match Columns( :Machine = :Machine, :channel = :Channel )
);
close( dtSumm, nosave );
close( dtFinal, nosave );
再:これが可能かどうかわからない...うわー!すごい!ありがとうございました!
再:これが可能かどうかわからない...では、どのように日付要素を含めるのでしょうか?examplev2には日付の列があります。 1チャネル2のデータポイントはテスト40を使用しているため、この日付(7/4)のデータが表示されます。 これらの日付テスト40は使用されなかったため、チャネル2の他の日付の他の行には表示されません。
再:これが可能かどうかわからない...必要なのは
names default to here(1);
// Set up a handle to point to the example data table
dt=current data table();
// Find the testnumbers for each machine/channel combination
dtSumm = dt << summary(
Group( :Date, :Machine, :Channel,:testnumber),
N,
Link to original data table(0)
);
// Create a new table to accumulate the testnumbers into a single value
dtFinal = New Table("Concat Test Number",
New Column("Date"),
New Column("Machine", character),
New Column("Channel"),
New Column("Tests", character)
);
For(i=1,i<=N Rows(dtSumm), i++,
If(i==1,
dtFinal << add Rows(1);
dtFinal:Date[N Rows(dtFinal)] = dtSumm:Date[i];
dtFinal:Machine[N Rows(dtFinal)] = dtSumm:Machine[i];
dtFinal:Channel[N Rows(dtFinal)] = dtSumm:Channel[i];
dtFinal:Tests[N Rows(dtFinal)] = char( dtSumm:testnumber[i])
,
dtSumm:Machine[i] != dtSumm:Machine[i-1] |
dtSumm:Channel[i] != dtSumm:Channel[i-1]
,
dtFinal << add Rows(1);
dtFinal:Date[N Rows(dtFinal)] = dtSumm:Date[i];
dtFinal:Machine[N Rows(dtFinal)] = dtSumm:Machine[i];
dtFinal:Channel[N Rows(dtFinal)] = dtSumm:Channel[i];
dtFinal:Tests[N Rows(dtFinal)] = char( dtSumm:testnumber[i])
,
dtFinal:Tests[N Rows(dtFinal)] = dtFinal:Tests[N Rows(dtFinal)] || "/" || char( dtSumm:testnumber[i])
)
);
// Merge the new column back to the origianl table
dt = dt << Update(
With( dtFinal ),
Match Columns( :Date = :Date, :Machine = :Machine, :channel = :Channel )
);
close( dtSumm, nosave );
close( dtFinal, nosave );
完了したら、「マシン」や「チャネル」などの追加の分類列として日付を追加します。
再:これが可能かどうかわからない...そうですか。
私がそれを適用したとき、スクリプトはうまくいきました。 データで一部の行に欠落していることに気付いた以外は。 これらの行で何が起こっているのか、なぜ機能しないのか、私にはまったくわかりません。
再:これが可能かどうかわからない...Date [i] vs. 日付[i-1]。 29行目に追加しましたが、スクリプトは機能しているようです。......確認してください
names default to here(1);
// Set up a handle to point to the example data table
dt=current data table();
// Find the testnumbers for each machine/channel combination
dtSumm = dt << summary(
Group( :Date, :Machine, :Channel,:testnumber),
N,
Link to original data table(0)
);
// Create a new table to accumulate the testnumbers into a single value
dtFinal = New Table("Concat Test Number",
New Column("Date"),
New Column("Machine", character),
New Column("Channel"),
New Column("Tests", character)
);
For(i=1,i<=N Rows(dtSumm), i++,
If(i==1,
dtFinal << add Rows(1);
dtFinal:Date[N Rows(dtFinal)] = dtSumm:Date[i];
dtFinal:Machine[N Rows(dtFinal)] = dtSumm:Machine[i];
dtFinal:Channel[N Rows(dtFinal)] = dtSumm:Channel[i];
dtFinal:Tests[N Rows(dtFinal)] = char( dtSumm:testnumber[i])
,
dtSumm:Date[i] != dtSumm:Date[i-1] | dtSumm:Machine[i] != dtSumm:Machine[i-1] |
dtSumm:Channel[i] != dtSumm:Channel[i-1]
,
dtFinal << add Rows(1);
dtFinal:Date[N Rows(dtFinal)] = dtSumm:Date[i];
dtFinal:Machine[N Rows(dtFinal)] = dtSumm:Machine[i];
dtFinal:Channel[N Rows(dtFinal)] = dtSumm:Channel[i];
dtFinal:Tests[N Rows(dtFinal)] = char( dtSumm:testnumber[i])
,
dtFinal:Tests[N Rows(dtFinal)] = dtFinal:Tests[N Rows(dtFinal)] || "/" || char( dtSumm:testnumber[i])
)
);
// Merge the new column back to the origianl table
dt = dt << Update(
With( dtFinal ),
Match Columns( :Date = :Date, :Machine = :Machine, :channel = :Channel )
);
close( dtSumm, nosave );
close( dtFinal, nosave );再:これが可能かどうかわからない...- JMPドキュメントライブラリのスクリプティングガイドを読む必要があります。
- はい、構文は異なります。これは、ドキュメントを読むことで学習します。 あなたが提案し、以下で変更したJSLは、列の数式で機能します。 これがオープンJSLコード内にある場合、sampletypeおよびsampleidへの参照には、問題の行を指す添え字が必要になります。
If( :sampletype == "Control" & contains(:sampleid,"Neg"), Col Max( :results))
再:これが可能かどうかわからない...それはより複雑な式だったので、私はそれをコンテナに対して正しく持っていました....しかし、他のエラーを犯しました...ばかげた私
再:これが可能かどうかわからない...ガイドをもっと読みます!再:これが可能かどうかわからない...ありがとうございました!
よく働く!
Ifステートメントでは、何かを持つことができます
If (:sampletype =="Conrol" & :sampleid contains "Neg", Col Max(:results), .)