不确定是否有可能...我有一个数据表,该表的列为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代码中,则对sampletype和sampleid的引用将需要下标指向相关行。
If( :sampletype == "Control" & contains(:sampleid,"Neg"), Col Max( :results))
回复:不确定这是可能的...我正确地包含了...。但由于其他公式比较复杂,因此出错了...
回复:不确定这是可能的...我将阅读更多指南!回复:不确定这是可能的...谢谢!
很棒!
在If语句中可以有一些东西
If (:sampletype =="Conrol" & :sampleid contains "Neg", Col Max(:results), .)