不確定是否有可能...我有一個數據表,該表的列為1或2(稱為通道)。 在另一欄中有“測試”的稱呼。 它是數字,例如10或20或30。
我想要創建另一個包含通道1和通道2所有“測試”的列。 因此,每行數據都會有一個包含基於通道的測試結果的列。 因此,通道1看起來像10 | 30 | 80,而通道2看起來是20 | 40 | 30。
數據表可能包含1000條來自不同測試的結果數據行。 我對查看哪個通道使用機器進行測試很感興趣。 由於不同的機器可以在不同的通道上進行不同的測試。
我可能還需要添加另一個限定符。 這樣,“測試”不僅可以通過通道進行連接,還可以通過機器(由序列號表示)進行連接。
這將以腳本形式包含在後腳本查詢中。
任何建議表示讚賞!
腳本編寫回复:不確定這是可能的...做您想做的事情不會很困難。但是,您的描述有些混亂。您能否提供一個數據表的小例子,以及您想要作為新的提議列的內容?回复:不確定這是可能的...確實附上了一個示例表。 僅列出了1台計算機,但表中可以超過1台。 同樣,隨著時間的推移,每個通道的測試號可能會更改。
我可以將數據製成表格,以按日期獲取哪個通道具有哪個測試編號,但是有一種方法可以在每一行數據的列中指示該編號。 testinitiationdatelocal可以用作獲取日期的短時間。
回复:不確定這是可能的...確實附上了一個示例表。 僅列出了1台計算機,但表中可以超過1台。 同樣,隨著時間的推移,每個通道的測試號可能會更改。
我可以將數據製成表格,以按日期獲取哪個通道具有哪個測試編號,但是有一種方法可以在每一行數據的列中指示該編號。 testinitiationdatelocal可以用作獲取“ date”的shortdate
回复:不確定這是可能的...這是一個將測試計算到單個列中的腳本。 只需將帶有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)之後的數據。 頻道2的其他日期的其他行不應顯示,因為未使用那些日期測試40。
回复:不確定這是可能的...我認為這需要
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添加為附加的分類列,例如“ Machine”和“ Channel”。
回复:不確定這是可能的...我懂了。
當我應用它時,便條起作用了。 除非我在數據中註意到某些行缺少它。 我不能完全弄清楚這些行是怎麼回事以及為什麼它行不通。
回复:不確定這是可能的...我未能添加Date [i]與。日期[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將適用於列公式。 如果是在開放的JSL代碼中,則對sampletype和sampleid的引用將需要一個下標指向相關行。
If( :sampletype == "Control" & contains(:sampleid,"Neg"), Col Max( :results))
回复:不確定這是可能的...我正確地包含了...。但由於其他公式比較複雜,因此出錯了...
回复:不確定這是可能的...我將閱讀更多指南!回复:不確定這是可能的...謝謝!
很棒!
在If語句中可以有一些東西
If (:sampletype =="Conrol" & :sampleid contains "Neg", Col Max(:results), .)