이것이 가능한지 확실하지 않습니다 ...1 또는 2 (채널이라고 함) 열이있는 데이터 테이블이 있습니다. 다른 열에는 '테스트'라는 명칭이 있습니다. 10, 20 또는 30과 같은 숫자입니다.
내가 원하는 것은 채널 1에 대한 모든 '테스트'를 연결 한 다음 채널 2에 대한 다른 열을 만드는 것입니다. 따라서 각 데이터 행에는 채널 기반 테스트의 연결이있는 열이 있습니다. 따라서 채널 1의 경우 10 | 30 | 80, 채널 2의 경우 20 | 40 | 30처럼 보일 수 있습니다.
데이터 테이블에는 서로 다른 테스트에서 얻은 1000 줄의 결과 데이터가 포함될 수 있습니다. 어떤 채널이 어떤 테스트를 머신별로 사용하는지보고 싶습니다. 다른 기계는 다른 채널에서 다른 테스트를 할 수 있기 때문입니다.
다른 한정자를 추가해야 할 수도 있습니다. 따라서 '테스트'는 채널 채널뿐만 아니라 기계 (일련 번호로 표시됨)별로 연결됩니다.
이것은 포스트 스크립트 쿼리에 포함하기위한 스크립트에 있습니다.
어떤 제안이라도 감사합니다!
스크립팅Re : 이것이 가능한지 확실하지 않습니다 ...원하는 것을하는 것은 그리 어렵지 않을 것입니다. 그러나 귀하의 설명은 약간 혼란 스럽습니다. 데이터 테이블의 작은 예를 제공 할 수 있습니까? 그리고 제안하는이 새 열로 원하는 것을 제공 할 수 있습니까?Re : 이것이 가능한지 확실하지 않습니다 ...물론 첨부 된 예제 테이블입니다. 하나의 기계 만 나열되지만 테이블에는 둘 이상이있을 수 있습니다. 또한 시간이 지남에 따라 채널 별 테스트 번호가 변경 될 수 있습니다.
데이터를 표로 작성하여 어떤 채널에 날짜별로 어떤 테스트 번호가 있는지 알 수 있지만 각 데이터 행에 대한 열에이를 표시하는 방법이 있습니다. testinitiationdatelocal은 하루를 얻기 위해 shortdate로 사용할 수 있습니다.
Re : 이것이 가능한지 확실하지 않습니다 ...물론 첨부 된 예제 테이블입니다. 하나의 기계 만 나열되지만 테이블에는 둘 이상이있을 수 있습니다. 또한 시간이 지남에 따라 채널 별 테스트 번호가 변경 될 수 있습니다.
데이터를 표로 작성하여 어떤 채널에 날짜별로 어떤 테스트 번호가 있는지 알 수 있지만 각 데이터 행에 대한 열에이를 표시하는 방법이 있습니다. testinitiationdatelocal은 '날짜'를 얻기 위해 shortdate로 사용될 수 있습니다.
Re : 이것이 가능한지 확실하지 않습니다 ...다음은 테스트를 단일 열로 계산하는 스크립트입니다. 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 );
Re : 이것이 가능한지 확실하지 않습니다 ...와! 놀랄 만한! 감사합니다!
Re : 이것이 가능한지 확실하지 않습니다 ...그렇다면 날짜 요소를 어떻게 포함시킬까요? examplev2에는 날짜가있는 열이 있습니다. 1 채널 2의 데이터 포인트는 테스트 40을 사용하므로 해당 날짜 (7/4)의 데이터에 대해 표시되어야합니다. 해당 날짜 테스트 40이 사용되지 않았으므로 채널 2의 다른 날짜에 대해 다른 줄에 표시되지 않아야합니다.
Re : 이것이 가능한지 확실하지 않습니다 ...내가 생각하는 모든 것은
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 );
완료, "Machine"및 "Channel"과 같은 추가 분류 열로 날짜를 추가하는 것입니다.
Re : 이것이 가능한지 확실하지 않습니다 ...내가 참조.
내가 그것을 적용했을 때 스크립트가 작동했습니다. 데이터에서 일부 줄이 누락되었음을 알았습니다. 이 라인에서 무슨 일이 일어나고 있는지, 왜 작동하지 않는지 알 수 없습니다.
Re : 이것이 가능한지 확실하지 않습니다 ...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 );Re : 이것이 가능한지 확실하지 않습니다 ...- JMP 문서 라이브러리의 스크립팅 가이드를 읽어야합니다.
- 예, 구문이 다르므로 설명서를 읽으면 학습하게됩니다. 아래에서 제안하고 수정 한 JSL은 열 수식에서 작동합니다. 이것이 개방형 JSL 코드에있는 경우 sampletype 및 sampleid에 대한 참조에는 해당 행을 가리키는 아래 첨자가 필요합니다.
If( :sampletype == "Control" & contains(:sampleid,"Neg"), Col Max( :results))
Re : 이것이 가능한지 확실하지 않습니다 ...나는 그것을 포함한다 ....하지만 더 복잡한 공식이기 때문에 다른 오류를 만들었다.
Re : 이것이 가능한지 확실하지 않습니다 ...가이드를 더 읽어 볼게요!Re : 이것이 가능한지 확실하지 않습니다 ...감사합니다!
잘 작동합니다!
If 문에서 무언가를 가질 수 있습니다.
If (:sampletype =="Conrol" & :sampleid contains "Neg", Col Max(:results), .)