안녕하세요 여러분,
자동차 산업에서 공급 품질 엔지니어와 함께 일하는 고객이 있습니다. 부품 번호 열, 기타 범주 열, 임시 승인 날짜를 표시하는 열, 실제 승인 날짜를 표시하는 열 및 수동으로 입력한 열이 있는 큰 PPAP(생산 부품 승인 프로세스) 스프레드시트가 있습니다. 잠정 날짜를 놓친 이유를 설명합니다. 고객의 목표는 다음을 수행하는 것입니다.
1) 예정된 부품 번호가 잠정 날짜까지 실제로 승인될 것인지 예측
2) 부품 번호가 잠정 승인 날짜보다 낮거나 높은지 시각화(일수)
내가 설명한 스프레드시트와 비슷한 샘플 데이터 세트가 있는 사람이 있는지 궁금합니다. 관련 데이터 세트를 찾는 데 어려움을 겪고 있습니다. JMP 테이블이 있으면 신뢰성/생존 메뉴에서 텍스트 탐색기, 그래프 빌더 및 일부 플랫폼을 시연할 수 있습니다(작동하려면 중도절단을 반전해야 할 수도 있음). 다른 제안 사항이 있습니까?
최상의,
클로비스
@cweisbart 에 대한 온라인 액세스를 고려할 수 있습니다. AIAG의 PPAP 문서 . 함께 일하는 사람들이 자동차 산업에 종사하고 있다면 이 문서에서 작업할 가능성이 큽니다. 이 산업에 공급하는 반도체 담당자가 측정 시스템 분석(동일한 아이디어, 다른 표준 문서)을 수행해야 할 때 비슷한 경험을 했습니다.
Ian 덕분에 요전날 당신과 매우 유사한 테이블을 만들었습니다. 누락된 유일한 것은 수동으로 입력한 텍스트 데이터입니다. DateDifference 응답에 대한 예측 변수로 몇 가지 일반적인 용어를 사용하는 것이 좋습니다. 그러나 데모 중에 여러 테이블을 가질 생각입니다. 날짜 조작 및 그래프 작성/표 작성을 보여주는 이와 유사한 표와 텍스트 탐색기의 이점을 보여주는 Chips JMP 파일과 같은 표입니다.
물론 데이터를 시뮬레이션한 다음 흥미로운 내러티브를 지원하도록 조정하는 것은 쉽습니다. 이렇게 하면 언급한 간단한 내용을 표시하는 데 도움이 될 수 있습니다. 말할 필요도 없이, 그것은 다소 오래된 코드입니다:
NamesDefaultToHere(1);
// *************************************************************************************************
// Change me!
// *************************************************************************************************
nr = 100; // Number of rows
earliestDate = DateDMY(1, 1, 2010); // Earliest possible start date
latestDate = DateDMY(31, 12, 2010); // Latest possible start date
processTimeMu = 14; // Mean of random process time (in days)
processTimeSigma = 7; // Sigma of random process time (in days)
// *************************************************************************************************
// Make some simulated 'start date' data (time ordered)
dt1 = NewTable("In",
NewColumn("In Date", Numeric, Continuous,
Formula(RandomInteger(earliestDate, latestDate)),
Format( "ddMonyyyy h:m:s", 22, 0 ),
Input Format( "ddMonyyyy h:m:s", 0 ),
)
);
dt1 << addRows(nr);
Column(dt1, "In Date") << deleteFormula;
dt1 << Sort(By(:In Date), ReplaceTable(1));
dt1 << NewColumn("ID", Numeric, Nominal, Values((1::nr)`));
dt1 << moveSelectedColumns(:ID, ToFirst);
// Make some simulated 'end date' data (don't allow the end date to be earlier than the start date)
inVals = Column(dt1, "In Date") << getValues;
processTime = J(nr, 1, Round(RandomNormal(processTimeMu, processTimeSigma), 0); );
processTime[Loc(processTime <= 0)] = 0;
outVals = inVals + InDays(processTime);
dt2 = NewTable("Out",
NewColumn("ID", Numeric, Nominal, Values((1::nr)`)),
NewColumn("Out Date", Numeric, Continuous,
Values(outVals),
Format( "ddMonyyyy h:m:s", 22, 0 ),
Input Format( "ddMonyyyy h:m:s", 0 ),
)
);
// Join dt1 and dt2
dt3 = dt2 << Join(
With( dt1 ),
SelectWith( :ID, :In Date ),
Select( :Out Date ),
By Matching Columns( :ID = :ID ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "In and Out Dates" )
);
// Add a column for the process time
dt3 << New Column( "Process time in days",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( DateDifference( :In Date, :Out Date, "Day" )),
);