조건부 출력과 셀 비교안녕,
나는 세다 아래 표를 예로 사용하여 조건에 따른 발생 횟수. 카운트 1에 대한 조건은 "매개변수" 및 "위치" 열이 모두 다음 행에서 함께 반복되거나 2개 열의 다른 곳에서 반복된다는 것입니다. 출력 테이블에는 "개수" , "도구 1", "도구 2"의 3개 추가 열이 있는 원래 테이블에 있는 동일한 열 데이터가 있습니다(도구 수는 5로 증가할 수 있음).

이 테이블의 출력은 다음과 같습니다. 행 3과 4는 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 );
다양한 플랫폼 및 기능에 대한 문서는 Scripting Index 및 Scripting Guide에 설명되어 있습니다.둘 다 도움말 풀다운 메뉴에서 사용할 수 있습니다.
Re: 조건부 출력으로 셀 비교안녕하세요,
나는 당신이 찾고 있는 것을 *생각*하지만 Jim이 언급한 것처럼 더 많은 컨텍스트가 더 좋습니다. 다음은 귀하가 제공한 데이터에 대해 귀하가 설명하는 출력을 생성하지만 계속할 출력 라인이 1줄뿐이므로... 추측일 뿐입니다. 귀하가 제공한 입력 및 출력에 따라 매개변수 및 위치 외에도 프로세스 및 부품 ALSO가 그룹화 변수(?)로 사용되며 데이터 요약에서 Count는 항상 n개 행보다 1이 적다고 가정합니다. . 그렇지 않은 경우 아래 코드에서 쉽게 변경할 수 있지만 다시 한 번... 추측일 뿐입니다.
어쨌든 이것을 시도하여 필요한 것인지 확인하고 그렇지 않은 경우 원하는 것에서 빠른 코드 모드가 되길 바랍니다.
건배,
브래디
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회 반복으로 계산해야 합니다. 두 번째 행이 동일하거나 다른 도구에 있는 경우 1회 반복 횟수에 대해 언급된 3가지 기준을 충족하는 한 중요하지 않습니다. 그런 다음 출력 테이블 예제에 "Tool1, "Tool2" 등이 표시되면 해당 반복에 대한 반복 이벤트에 어떤 도구가 관련되었는지에 대한 레코드가 됩니다. 따라서 도구 "E"로 이동한 경우 (위치, 매개변수, 프로세스)는 같은 날 발생한 다른 이벤트를 나타내고 도구 "F"에 있었던 경우 오른쪽에 열이 추가되어 첫 번째 이벤트가 발생했음을 반영합니다. E에서, F에서 두 번째 등. 결국 도구, 매개변수, 위치 등으로 반복 이벤트 수를 표시할 수 있는 요약에서 jmp에 플롯 세트를 만들고 싶습니다. 이러한 반복 이벤트에 어떤 도구가 관련되어 있는지 외에도. 내 생각에 조금 더 설명되기를 바랍니다. 시간 내주셔서 감사합니다. 감사합니다.
Re: 조건부 출력으로 셀 비교Brady와 내 버전의 코드는 모두 제공한 간단한 테이블에서 작동합니다. 나는 그의 코드가 작동하지 않는다면 우리가 테스트할 수 있는 더 많은 인구가 있는 테이블을 제공하라는 것에 동의합니다.
Re: 조건부 출력으로 셀 비교안녕,
첫째, 오랜 지연에 대해 사과드립니다. 여러 방향으로 끌려갔습니다. 다음으로 스크립트 덕분에 거의 완벽했고 "최종" 테이블이 출력되었습니다. 내가 찾은 것은 카운트 열이 수행해야 할 작업을 수행하지만 "도구"가 데이터를 고정하지 않는다는 것입니다. 각 도구에 대한 의미는 히트/카운트의 총 "카운트"가 있어야 하므로 "카운트"에 대한 하나의 열과 그 옆에 있는 도구에 대한 해당 열에는 히트 수가 있어야 합니다. 이는 매개변수와 같은 다른 열에 의해 그룹화됩니다. 위치 등... 내가 얻는 것은 아래 그림과 같습니다. 여기서 도구는 개수와 관련된 행에 분산되어 있을 뿐만 아니라 다른 열로 분할됩니다. 그리고 새로 생성된 "도구" 열은 동일한 ID를 반복합니다.

Re: 조건부 출력으로 셀 비교위의 출력 예이며 출력이 어떻게 보여야 하는지에 대한 예입니까, 아니면 현재 출력이 어떻게 잘못된지에 대한 예입니까?
테스트에 사용할 수 있는 실제 데이터의 예가 있으므로 사용 중인 JMP 데이터 테이블을 첨부할 수 있습니까?또한 위의 내용이 데이터의 모양에 대한 예가 아닌 경우 간단한 예를 제공할 수 있습니까?나는 당신이 정말로 찾고있는 것이 무엇인지 혼란 스럽습니다.
Re: 조건부 출력으로 셀 비교감사합니다!
Re: 조건부 출력으로 셀 비교약간의 그룹화 조작으로도 작동할 수 있습니다.